#!/bin/bash
set_bash_profile()
{
local bash_profile="$HOME/.profile"
if [[ -w $bash_profile ]]; then
if (grep 'MY_VAR' $bash_profile 2>&1); then
sed -i '/MY_VAR/d' $bash_profile
fi
echo "export MY_VAR=foo" >>$b
我在同一个目录下有3个脚本,请查看下面x.sh,y.sh和z.sh的内容:
x.sh :-
xData="DataOfX"
function xInit(){
echo "xInit : data of a >$xData<"
}
y.sh :-
. x.sh
xInit
sh z.sh zInit
z.sh :-
function zInit(){
echo "zInit of z"
xInit
}
$@
正在执行中
。y.sh
在同一目录中给出以下输出:-
xInit : data of a &g
一直在测试外部功能。总的来说,它们似乎像预期的那样起作用,但这次除外。
我在一个外挂脚本(mylib)中设置了颜色
这似乎很好:
#!/bin/bash
. mylib
red
echo " red text "
. mylib
white
echo " white text "
这不是,不知道该怎么办。我想在同一条线上换颜色。(没有所有转义编码)
#!/bin/bash
. mylib
red
echo "Red text " . mylib white " white text"
我尝试了几个括号和'$‘的想法,但
Bash似乎没有将"exit on error“环境标志传递到命令替换shell中。
我使用了大量的命令替换(以解决bash缺乏返回值的问题),但是如果子still中的某些内容失败了,我仍然希望整个脚本继续运行。
因此,例如:
set -e
function do_internet {
curl not.valid.address
}
answer=$(do_internet)
我想让剧本停下来,不要再继续了。(我希望设置-e将不再需要在每件事情上都使用“\死”。
我做错什么了吗?还有/或有办法解决这个问题吗?
下面是一个小小的例子:
#!/bin/bash
se
我尝试在脚本中创建一个别名,如下所示:
#!/bin/bash
shopt -s expand_aliases
#Currently just using 'git' to try and get it working
#It'll be replaced with the following line when it works
#compgen -c | while read x;
echo 'git' | while read x;
do
a=`echo $x | tr '[:lower:]' '[:upper
每当我执行输出多行的linux命令时,我都想对输出的每一行执行一些操作。一般来说,我是这样做的
command something | while read a
do
some operation on $a;
done
这可以很好地工作。但我的问题是,有没有一些方法可以通过预定义的符号(不知道如何调用它)来访问每一行?/像$这样的东西?或者..。$!..或者..。$_
有没有可能做
cat to_be_removed.txt | rm -f $LINE
bash中是否有预定义的$LINE ..或者前一条是最短的路。即。
cat to_be_removed.txt | while read
我正在我的bash脚本(比如child.sh)中调用bash脚本(比如parent.sh),我希望脚本(child.sh)中的错误被困在我的父脚本(parent.sh)中。
我通过和阅读。基于此,我认为我应该对我的父脚本执行set -E,以便由子shell继承这些陷阱。因此,我的代码如下
parent.sh
#!/bin/bash
set -E
error() {
echo -e "$0: \e[0;33mERROR: The Zero Touch Provisioning script failed while running the command $BASH_COMM
我想要创建一个bash脚本,它从":“字符之前的文本文件中选择每一行的第一个单词,并将其输出到一个数组中(1行1插槽)。
现在我有一个:
while read p;
do
arr+=$p | sed -r 's///'
done
我也不知道在什么情况下应该放什么。
我有个雷鬼:
/^([^:])+/gm
我已经编写了一个用于连接到DB2数据库的shell脚本。此脚本列出DB2服务器上的数据库,并在用户输入所需的数据库名称后连接到数据库。但是,在脚本运行时显示成功的数据库连接信息后,当我尝试对数据库运行命令时,它显示数据库连接不存在。SQLSTATE=08003
#!/bin/bash
#
#DBA DB2 Script: DB connection script-connectdb
#Created By : Ashish Verma
#Creation Date : 04/27/2019
#
#Purpose: This script connects to and activates th
bash: 4.3.42(1)-release (x86_64-pc-linux-gnu)
执行以下脚本:
# This is myscript.sh
line=$(ps aux | grep [m]yscript) # A => returns two duplicates processes (why?)
echo "'$line'"
ps aux | grep [m]yscript # B => returns only one
输出:
'tom 31836 0.0 0.0 17656 3132 pts/
假设我有一个MySQL表test,如下所示:
+----+---------------------+
| id | value |
+----+---------------------+
| 1 | Hello World |
| 2 | Foo Bar |
| 3 | Goodbye Cruel World |
+----+---------------------+
然后我执行查询SELECT id, value FROM test。如何使用read将每一列分配给Bash中的一个变量
read -a截断value
我读过,您可以将I/O重定向到Bash中的各种构造(例如"if“和"while")。当我尝试这一点时,我注意到在if结构的末尾使用一个“AC.26”可以阻止我在if构造中覆盖的任何变量生效;但是如果我使用">“代替,那么变量修改就生效了。
#!/bin/bash
VAR_0='Unmodified'
if true
then
VAR_0='Changed'
fi | cat
echo "VAR_0: $VAR_0"
###########
VAR_1='Unmodified'