我试图读出名为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"
排空是出于某种原因$计数器。
所以命令变量只包含“p”。
不要发明自己的语法。阅读命令替换。 https://www.gnu.org/software/bash/manual/bash.html#Command-Substitution – 4ae1e1
呵呵,引用,这也是错误的。 https://www.gnu.org/software/bash/manual/bash.html#Quoting – 4ae1e1
这里还需要更多的上下文。 $ counter从哪里来,$ p的用途是什么 - 我可以向你展示正确的语法,但并非没有一个有意义的例子。 – asimovwasright