我正在尝试读出名为directorylist的文件的某一行。
我试图调试它,但我发现没有任何帮助。看来,命令变量不应该是“6p”。
(计数器现在是6)
p=p
command="$counter$p"
user= sed -n '$command' directorylist
chown $user:$user /home/$user
那些人知道问题出在哪里了?
提前致谢
EDIT1:
嗨,谢谢快速回应。
到目前为止,这是整个剧本:
#!/bin/bash
rm -f directorylist
touch directorylist
array=($(ls /home))
printf "%s\n" "${array[@]}" >> directorylist
counter= wc -l <directorylist
recounter=0
while [[ $recounter != $counter ]]
do
((recounter=recounter+1))
p=p
command="$counter$p"
user= sed -n '$command' directorylist
chown $user:$user /home/$user
done
EDIT2:
由于某种原因,它在变量中写了“ommand”:
chown: invalid user: ‘ommand:ommand’
EDIT3:
你是对的,问题在于引号。
但仍然有两件事我没有先得到:
chown: cannot access ‘random’: No such file or directory
这个目录当然存在。
其次是事实,它似乎忽略了循环条件。
到目前为止有六个用户(以及六个主目录)。第一个计数器是这个数字。第二个从零开始,继续上升一个。只要不相等,循环就应该继续。但那应该只需要6个循环。 :/
Edit4:
好像是
command="$counter$p"
出于某种原因正在清空$ counter。
因此命令变量只包含“p”。
答案 0 :(得分:0)
立即工作; - )
#!/bin/bash -x
rm -f directorylist
touch directorylist
array=($(ls /home))
printf "%s\n" "${array[@]}" >> directorylist
counter="$(wc -l < directorylist)"
recounter=0
while [ "$recounter" != "$counter" ]
do
((recounter=recounter+1))
p=p
command="$counter$p"
user="$(sed -n $command directorylist)"
chown $user:$user /home/$user
done
答案 1 :(得分:0)
尝试:
#!/bin/bash
rm -f directorylist
touch directorylist
array=($(ls /home))
printf "%s\n" "${array[@]}" >> directorylist
counter=$(wc -l < directorylist)
recounter=0
p=p
while [[ $recounter != $counter ]]
do
((recounter=recounter+1))
command="$counter$p"
user=$(sed -n "$command" directorylist)
sudo chown $user:$user /home/$user
done
EDIT2:
由于某种原因,它正在编写&#34; ommand&#34;在变量中:
chown: invalid user: ‘ommand:ommand’
单引号&#39;