在括号内使用BASH变量{}

时间:2015-02-12 04:22:55

标签: linux bash

所以,我开始在学习bash的测试环境中取得一些不错的进展。我现在仍然在学习基础知识,并且谷歌已经搜索了大约一个小时了。

我试图为此基本上所有部分创建变量,因此它很容易更改 - 从目录到文件路径名。

**

My current code:
parent_directory='/home/local/test_scripts'
directory_name='app_ms'
directory_output='1..4'
file_name='test'
file_output='log,out'
file_repeat='1..10'
mkdir -p $parent_directory $parent_location/$directory_name{directory_output};
touch $parent_directory/$parent_location/$directory_name{directory_output}/$file_name{file_output} $file_name{file_output}.{file_repeat}

**

直到我取消括号 - {file_repeat}的时候,一切都按照我预期的方式工作。

理想情况下,我希望输出代表:

**mkdir -p /home/local/test_scripts /home/local/test_scripts/app_ms{1..4}
touch /home/local/test_script/app_ms{1..4}/test.{log, out}
touch /home /local/test_script/app_ms{1..4}/test.{log, out}.{1..4}**

TL; DR:尝试在括号内创建多个文件时,我是否遗漏了某些内容?当我在里面调用一个变量时,它只创建一个名为" app_ms {1..4}"的目录。当我使用变量调用方法时。如果我直接输入它,它会创建app_ms1,app_ms2,app_ms3和app_ms4,并在文件夹中创建我想要的所有文件。

1 个答案:

答案 0 :(得分:0)

扩展订单并非如此。变量扩展的结果不是支撑扩展。所以你可以将这些字符串作为输出,但你不能(不需要eval你不想要的)让shell以这种方式运行它们。

有关详细信息及其执行顺序,请参阅Shell Expansions