bash脚本字符串
① 如何将bash shell脚本字符串写入到文件中
刚学完新书《实用Linux Shell编程》,写的不错,容易懂,网上和书店都有卖。
现在试着回答,仅供参考,谢谢。
1)先保证文件内容正确:
2)文件1文件2只有唯一字符串,所以情况相对简单。脚本写好了,别忘了给脚本增加执行权限。
② hell 如何在bash脚本中连接两个字符串变量
bash在一个脚本里引用另一个脚本定义的变量有3种方法:
fork(/directory/script.sh)
fork是最普通的,就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本.
运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候,parent-shell还在。
sub-shell执行完毕后返回parent-shell.sub-shell从parent-shell继承环境变量.但是sub-shell中的环境变量不会带回parent-shell
exec(exec/directory/script.sh)
exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本.被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后,父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别
source(source/directory/script.sh)
与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行.所以被调用的脚本中声明的变量和环境变量,都可以在主脚本中得到和使用.
可以通过下面这两个脚本来体会三种调用方式的不同:
1.sh
#!/bin/bash
A=B
echo"PIDfor1.shbeforeexec/source/fork:$$"
exportA
echo"1.sh:$Ais$A"
case$1in
exec)
echo"usingexec…"
exec./2.sh;;
source)
echo"usingsource…"
../2.sh;;
*)
echo"usingforkbydefault…"
./2.sh;;
esac
echo"PIDfor1.shafterexec/source/fork:$$"
echo"1.sh:$Ais$A"
2.sh
#!/bin/bash
echo"PIDfor2.sh:$$"
echo"2.shget$A=$Afrom1.sh"
A=C
exportA
echo"2.sh:$Ais$A"
执行情况:
$./1.sh
PIDfor1.shbeforeexec/source/fork:5845364
1.sh:$AisB
usingforkbydefault…
PIDfor2.sh:5242940
2.shget$A=Bfrom1.sh
2.sh:$AisC
PIDfor1.shafterexec/source/fork:5845364
1.sh:$AisB
$./1.shexec
PIDfor1.shbeforeexec/source/fork:5562668
1.sh:$AisB
usingexec…
PIDfor2.sh:5562668
2.shget$A=Bfrom1.sh
2.sh:$AisC
$./1.shsource
PIDfor1.shbeforeexec/source/fork:5156894
1.sh:$AisB
usingsource…
PIDfor2.sh:5156894
2.shget$A=Bfrom1.sh
2.sh:$AisC
PIDfor1.shafterexec/source/fork:5156894
1.sh:$AisC
$
③ bash脚本中,条件判断一个字串是否在数组中,除了列举之外,还有什么简单的写法吗
只能是遍历数组元素来比较:
if [ "$str1“ = "conditon1" ]; then
action1
elif [ “$str1” = "conditon3" ]; then
action 3
fi
for elem in ${array[@]}
do
if [ "$str1" = "$elem" ]; then
action2
break
fi
done
④ 在shell bash脚本里,如何把一个字符串中的回车转成其他字符
假设 s 是含回车的字符串
echo$s|tr' '' '
能够将回车转成 Tab。 可以换成你想要字符。