变量命名
避免同系统变量(PATH)重名。
sed
记录在shell里执行 sed命令遇到的问题。
单引号问题
在命令行
sed -i 's/原内容/更新内容/g' file
shell语法里sed -i的参数无需单引号
sed -i s/原内容/更新内容/g file
正则表达式问题
建议把parttern和更新内容都以字符串的方式保存到变量里。当parttern和更新内容都包含空格(oracle_21="source.querywhere=where to_char(CREATE_TIME,'yyyymmdd') like '%$op_d%'"
),
编写方式,用双引号包围 取值表达式 “$oracle_21”
sed -i s/$parttern_oracle/"$oracle_21"/g file
把文件内容组织到数组
- wile
局限,do块内的操作不会更新语句块外的同名变量。
cat [path]|while read line
do
done
- for
for var in `awk '{print $x}'
do
done
shell执行scp自动输入密码
expect
expect -c "
spawn scp ps_order_92_data modeluser@10.0.180.39:/home/modeluser/dfgx/tmp/lzy/data/ps_order/
expect \"password:\"
send \"$scp_pass\r\"
expect eof
"