我试图创建一个bash脚本,询问一个目录,然后请求选项(两个都使用对话框),但我似乎无法让它工作。
如果目录是$directory
并且选项保存为$options
我假设命令是:
ls $options $directory
但到目前为止,这还没有奏效。该命令失败,因为它尝试将选项作为目录运行。部分问题似乎是检查表的输入带有双引号,但我不确定如何删除它们。另外,如果我跑:
ls "-A" ~
然后命令运行正常,但是通过bash脚本(并且我使用调试器检查),完全相同的行将失败,无论是使用变量还是作为硬编码行。
我错过了一些明显的东西吗?如果有帮助,我可以发布我使用的实际代码。
答案 0 :(得分:1)
看起来你必须摆脱“”。你可以这样做:
options3=${options3:1}
options3=${options3%?}
或
options3=`eval echo $options3`
#!/bin/bash
directory=$2
options=$1
options2="-l"
options3="\"-l\""
# correct
#echo "options: $options"
#ls $options $directory
#echo
#echo
# correct
#echo "options: $options2"
#ls $options2 $directory
#echo
#echo
# incorrect
# echo "options: $options3"
# ls $options3 $directory
# correct
options3=${options3:1}
options3=${options3%?}
echo "options: $options3"
ls $options3 $directory
# correct
options3=`eval echo $options3`
ls $options3 $directory
答案 1 :(得分:0)
可能是您在波浪扩展方面遇到问题。在变量上使用 eval 以允许替换。
#!/bin/bash
options="-A"
directory="~"
directory=`eval "echo $directory"`
ls $options $directory
答案 2 :(得分:-1)
你可以使用$ 0和$ 1(也可能是$ 1和$ 2,我忘了) $ 1将是第一个参数。所以在你的情况下它将是字典。 EX:ls car