linux常用符号及参数传递

浏览: 1407

. ./foo.sh 在当前bash下执行, 同source ./foo.sh。

foo.sh中环境变量设置,会对当前Shell起作用。

./foo.sh启动一个子shell执行。

foo.sh中环境变量设置,只会影响子shell,无法改变当前BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。

'string' 单引号   引号内容视为单一字串。引号内$没有作用,视为一般符号处理,防止任何变量替换。

# var=home
# echo '$var'
# $var

\' 单引号转义符     命令行中,单引号内不能出现单引号,要在单引号外,用单引号转义符。

# echo 'matlab -nodisplay -r "matchup('\'"$mat_feat_new"\',\'"$mat_feat_old"\',\'"$asin_new"\',\'"$asin_old"\',"$topi",\'"$matchup_csv"\''); exit;"'
# matlab -nodisplay -r "matchup('','','','',,''); exit;"

"string"       引号内容视为单一字串。防止通配符扩展,但允许变量扩展。

# var=home
# echo "$var"
# home

`command` 倒引号      引号括住命令

# foo=`date +%F`
# echo "Today $foo"
# Today 2017-07-16

$0, $1, $2, ....., ${10}, ${11}    ./foo.sh var1 var2 引用参数

 指令本身为0,其后为1,然后依此类推。个位数直接用数字,两位数以上用 {}括住。

$* 代表所有参数列表

使用时,视情况加上双引号。echo "$*",以"$1 $2 … $n"的形式输出所有参数。 

$@所有参数列表

echo "$@",以"$1" "$2" … "$n" 的形式输出所有参数。

var=${@:2:10}

第2个参数,共10个参数


shell脚本变量参数+远程postgreSQL库+sql变量参数

例子:运行本地脚本,删除server上的postgreSQL库中,table1中brand是nike的记录

./deletesth.sh nike

其中:

deletesth.sh 如下

ssh user@192.168.0.16 "cd workdir/; ./delete_data.sh '$1';"

此处,双引号是ssh命令要求,可以执行多句命令。单引号防止变量替换

192.168.0.16上,workdir目录下的delete_data.sh 如下

psql -d exampledb -h localhost -U dbuser -v var1="'"$1"'" -f delete_data.sql

此处,引号保证变量 :var1 最后结果是'nike'(变量的值是条件查询中的字符串)

192.168.0.16上,workdir目录下的delete_data.sql 如下

delete from table1 where brand = :var1;
推荐 1
本文由 safa 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

太复杂了^-^

要回复文章请先登录注册