【发布时间】:2019-06-20 14:26:50
【问题描述】:
我想将我在" 中发送的任何内容插入到变量中。
例如:
check.sh:
#!/bin/bash
./b.sh -a "$@"
b.sh:
#!/bin/bash
while getopts ":a:b:c:" opt; do
case ${opt} in
a) A="$OPTARG"
;;
b) B="$OPTARG"
;;
c) C="$OPTARG"
;;
:) echo "bla"
exit 1
;;
esac
done
echo "a: $A, b: $B, c: $C"
运行#1: 期望的结果:
user@host $ ./check.sh -a asd -b "asd|asd -x y" -c asd
a: -a asd -b "asd|asd -x y" -c asd, b: ,c:
实际结果:
user@host $ ./check.sh -a asd -b "asd|asd -x y" -c asd
a: -a, b: , c:
运行#2: 期望的结果:
user@host $ ./check_params.sh -a asd -b asd|asd -c asd
a: -a asd -b asd|asd -c asd, b: ,c:
实际结果:
user@host $ ./check_params.sh -a asd -b asd|asd -c asd
-bash: asd: command not found
【问题讨论】:
-
check.sh 在它获得的 arg 列表之前添加了
-a,因此它有效地运行了./b.sh -a -a asd -b "asd|asd -x y" -c asd-- 加倍的-a引起了很多混乱。