我想在debian中创建一个shell脚本:
(创建d1;复制links.txt并重命名为d1.txt;将每个数字从0更改为99为1.然后对于d2,将其重命名为d2.txt,将每个数字更改为2 ...相同12)。
#!/bin/bash
START=1
END=12
for ((i=START; i<=END; i++))
do
mkdir d'$i'
cp /home/user/script/links.txt /home/user/script/d'$i'.txt
grep -rli '([0-99])' /home/user/script/d'$i'.txt | xargs -i@ sed -i 's/[0-99]/'$i'/g' @
wget -i /home/user/script/d'$i'/d'$i'.txt
done
我需要更改什么才能使其正常工作?
答案 0 :(得分:1)
单引号可防止字符串中的变量替换。你应该使用双引号。 [0-99]
也没有按你的想法行事。角色类一次只匹配一个字符,因此您只需要在那里查找字符0-9。我认为这应该做你想要的:
#!/bin/bash
START=1
END=12
for ((i=START; i<=END; i++))
do
mkdir d"$i"
sed -r 's/([0-9]|[1-9][0-9])/'$i'/g' /home/user/script/links.txt > "/home/user/script/d$i/d$i.txt"
wget -i "/home/user/script/d$i/d$i.txt"
done