环境:Ubuntu 14.04.5 LTS
把aa.log文件中的所有行拼接成字符串并用“|”分割:
aa.log:
aaaaa
bbbbb
ccccc
wf.sh
#!/bin/bash
str_wh=""
for i in `cat aa.log`
do
str_wh="$str_wh|${i}"
done
var=$str_wh
echo $var
echo ${var:1}
执行: sh wf.sh
报错:Bad substitution
网上查到的解决方法都是加#!/bin/bash,但是已经加了还是报错!
解决方法:
一.
执行:
bash wf.sh
结果:
|aaaaa|bbbbb|ccccc
aaaaa
二.
执行:
chmod 777 wf.sh
./wf.sh
结果:
|aaaaa|bbbbb|ccccc
aaaaa
结论:不言自明。哈哈。。。
vagrant@vagrant-ubuntu-trusty-64:~$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash
ubuntu用户默认使用的shell是dash而不是bash,只在脚本里面加#!/bin/bash并没有效果。。。