只是想知道是否有任何bashMaven可以帮助我们找到一种方法,在两种情况下获得相同的行为,在下面的代码中的2个结果。我希望能够得到与变量(result1)相同的结果,但需要传递一个参数(result2)。也许这是不可能的,无论争论...
密码
#!/bin/sh
var1="$(ls)"
echo -------var1-------
echo $var1
var2=$1
echo -------var2-------
echo $var2
# execute ls with variable
result1=$(file ${var1})
# execute ls with script argument
result2=$(file ${var2})
echo ------ result1 ------
echo $result1
echo ---------------------
echo ------ result2 ------
echo $result2
echo ---------------------
字符串
命令和结果
>./test.sh '$(ls)'
-------var1-------
myzipfile.zip test.sh
-------var2-------
$(ls)
------ result1 ------
myzipfile.zip: Zip archive data, at least v2.0 to extract
test.sh: POSIX shell script, ASCII text executable
---------------------
------ result2 ------
$(ls): cannot open `$(ls)' (No such file or directory)
---------------------
型
1条答案
按热度按时间4urapxun1#
您必须使用
eval
将变量作为bash代码处理。字符串
如果脚本参数来自执行脚本的用户无法控制的地方,则不应使用这样的命令,因为它们可能会在
$1
中放置危险的命令。