Shell

使用者定義變數的“$@”擴展

  • August 4, 2015

我正在嘗試讓(bourne shell)變數像“ $@ ”一樣擴展,因此它會產生多個單詞,其中一些單詞保留了空格。我嘗試以許多不同的方式定義變數,但仍然無法使其工作:

#!/bin/sh

n=\"one\ two\"\ three
for i in "$n"; do
echo $i
done

我想定義變數,以便腳本one two首先輸出,然後three是下一次迭代,如果你用“ $@'one two' three ”替換引用的變數並作為參數傳遞,你會得到什麼。

$@ ” 只是魔術嗎?

所以 bourne shell (IIRC) 不支持數組。您仍然可以使用“$@”

set -- "one two" three
for i in "${@}" ; do
   echo "$i"
done

輸出:

one two
three

在 AIX 7.1 bsh 上測試。

引用自:https://unix.stackexchange.com/questions/220019