bash - shell脚本中的问题,用变量替换显式字符串
问题描述
我一直在使用一个 shell 脚本,它曾经做过这样的事情:
output=$(ls -R /logs/{abc,cde}/"$((${date}/100))"/*/out*${date}* | grep -v "Random" )
echo $output
在运行此命令时,我曾经在相关位置获取带有 abc 或 cde 的文件。您可以忽略其他变量,例如日期等
但是,当我修改脚本以将 abc,cde 作为命令行参数而不是脚本中的硬编码时,它停止工作。我将命令更改为:
output=$(ls -R /logs/{${list}}/"$((${date}/100))"/*/out*${date}* | grep -v "Random" )
列表在哪里abc,cde
我尝试了很多不同的引号组合等,但它似乎不起作用。有人可以帮助它正确工作的正确语法吗
解决方案
试试这个
将 abc 和 cde 分配给数组 ex - declare -a ARR=(abc cde)
将其分配给如下变量。
输出=
ls -R /logs/${ARR[@]/"$((${date}/100))"/*/out*${date}* | grep -v "Random"
推荐阅读
- javascript - CSS transition doesn't work after Javascript
- spring - 我使用openjdk时Activiti BPMN没有字体
- html - Onlick 桌面 VS 移动
- android - 我的应用需要在 SD 卡上存储一张图片以在 Facebook 动态消息上分享
- php - 在ajax调用中将php变量传递给add_filter
- ansible - 如何在角色下的文件夹中引用变量
- c++ - 如何将具有空字符的字节数组输入 std::iostream?
- botframework - MS Teams UI Microsoft bot框架的自定义
- python - 使用多索引在 DataFrame 中添加一行
- python - 如何在python中选择csv文件的特定列