Làm cách nào để gán giá trị cho tham số vị trí trong Bash? Tôi muốn chỉ định giá trị cho thông số mặc định:Chỉ định tham số vị trí
if [ -z "$4" ]; then
4=$3
fi
Cho biết 4 không phải là lệnh.
Làm cách nào để gán giá trị cho tham số vị trí trong Bash? Tôi muốn chỉ định giá trị cho thông số mặc định:Chỉ định tham số vị trí
if [ -z "$4" ]; then
4=$3
fi
Cho biết 4 không phải là lệnh.
Các set
built-in là cách duy nhất để thiết lập các thông số vị trí
$ set -- this is a test
$ echo $1
this
$ echo $4
test
nơi --
bảo vệ chống lại những điều mà trông giống như tùy chọn (ví dụ -x
).
Trong trường hợp của bạn, bạn có thể muốn:
if [ -z "$4" ]; then
set -- "$1" "$2" "$3" "$3"
fi
nhưng nó có lẽ sẽ rõ ràng hơn như
if [ -z "$4" ]; then
# default the fourth option if it is null
fourth="$3"
set -- "$1" "$2" "$3" "$fourth"
fi
bạn cũng có thể muốn xem xét các thông số đếm $#
thay vì thử nghiệm cho -z
.
Bạn có thể làm những gì bạn muốn bằng cách gọi kịch bản của bạn một lần nữa với một tham số thứ tư:
if [ -z "$4" ]; then
$0 "$1" "$2" "$3" "$3"
exit $?
fi
echo $4
Calling trên kịch bản như ./script.sh one two three
chí đầu ra:
ba
'./ $ 0' sẽ không hoạt động nếu tập lệnh được truy cập thông qua PATH, '$ 0' sẽ không sao nếu nó hoạt động với'./Script' và '/ usr/local/bin/script', v.v. – msw