小编Tom*_*ett的帖子

使用脚本在bash中创建文件的多个副本

我开始学习如何在Linux中使用bash shell命令和脚本.

我想创建一个脚本来获取源文件,并创建一个选定数量的命名副本.

例如,我将源代码作为testFile,我选择了15个副本,因此它在同一位置创建了testFile1,2,3 ... 14,15.

为了尝试实现这一点,我尝试使用以下命令:

for LABEL in {$X..$Y}; do cp $INPUT $INPUT$LABEL; done
Run Code Online (Sandbox Code Playgroud)

但是,它不是创建从X到Y的文件,而是只添加一个文件(例如){1..5}而不是文件1,2,3,4和5

如何更改它以便正确使用变量作为循环的数字?

linux bash shell

8
推荐指数
1
解决办法
7395
查看次数

Bash:对包含空格的变量使用cd命令

我试图更改脚本中的目录,以便使用相对路径执行一系列操作.该文件夹是一个名为的变量$input_path:

cd $(echo "$input_path")
Run Code Online (Sandbox Code Playgroud)

如果变量中有空格,例如"/ home/user/test directory/subfolder",脚本将返回错误:

./test_currently_broken.sh:86行:cd:"/ home/user/test:没有这样的文件或目录

我尝试了各种方法来逃避空间:

# escape spaces using backslashes, using sed
input_path=$(echo "$input_path" | sed 's/ /\\ /g')
Run Code Online (Sandbox Code Playgroud)

要么

# wrap input path with awk to add quotes
input_path=$(echo "$input_path" | awk '{print "\"" $0 "\""}')
Run Code Online (Sandbox Code Playgroud)

要么

# wrap in single quotes using sed
input_path=$(echo "$input_path" | sed -e "s/\(.*\)/'\1'/")#
Run Code Online (Sandbox Code Playgroud)

但没有人修复错误 - 它仍然无法更改目录.我已经确认它尝试更改的目录肯定存在,并且cding在此脚本之外工作.

有这种奇怪行为的解决方案cd吗?

bash shell awk cd sed

0
推荐指数
1
解决办法
3903
查看次数

标签 统计

bash ×2

shell ×2

awk ×1

cd ×1

linux ×1

sed ×1