Send 2 parameters to a script
我刚开始使用bash,所以我希望答案不明显。我有一个名为playlists.txt的文件,如下所示:
- 冷却子步骤plynrad9jn2wdwrrs_uw6ur55k-c_s6eh4
- 经典plynrad9jn2wdwzfpig3a2tkobttenabc6
- 冷冻机PLynrad9jn2wcfucos22kn3pbx1xuffine
- 圆滑滑的PLynrad9jn2wdmpu3gnvxivo8baiocqkx7
- 专辑,音乐会Plynrad9jn2wd3bi8o5vjmsbhzgfyh5zax
我想将每行的第一个字符串分配给$name,将第二个字符串分配给$hash,然后将其发送给script.sh,并对每行递归执行此操作,因为知道将来行数可能会增加。
我写了这封信,但它不起作用:使用这个->如何在bash shell中将一个字符串分割成多个变量?
1 2 3 4 5 6 | while read name hash do sh script.sh"$name""$hash" done < playlists.txt |
我应该做什么?提前谢谢。
编辑:谢谢,伙计们,所以我把它改成了这个,它更容易阅读。我以为,它会解决我的错误,但仍然存在……该死的。所以基本上,在script.sh中,这里是第一部分:
1 2 3 | cd ~/Music/Youtube\ Playlist/Playlists/$name mv $HOME/Music/Youtube\ Playlist/Playlists/$name/TextRecords/lastoutput.txt $HOME/Music/Youtube\ Playlist/Playlists/lastoutput.txt |
号
但是,shell返回错误:
1 | mv: cannot stat `/home/kabaka/Music/Youtube Playlist/Playlists//TextRecords/lastoutput.txt': No such file or directory |
这意味着在播放列表的名称应该存在的地方,什么都没有。你知道为什么吗?是因为我当前脚本中的$name和上面脚本中的$name不同吗?注意,对于$hash,我也有同样的事情发生,它应该出现在一个URL中,但只是一个空白。
代码如下:
1 2 3 4 5 6 7 | while read line do name=`echo $line|cut -f1 -d' '` hash=`echo $line|cut -f2 -d' '` sh script.sh $name $hash done < playlists.txt |
第二个问题:在将文件移动到目录之前,请确保它存在。您可以使用"mkdir-p"创建它,如下所示:
1 | mkdir -p $HOME/Music/Youtube\ Playlist/Playlists/lastoutput.txt |
。
它就快开始工作了,只说
1 2 3 | while read name hash; do sh script.sh"$name""$hash" done < playlists.txt |
你就快到了,有几种方法可以做到这一点,但一个典型的解决方案是
1 2 3 4 | while read name hash do sh script.sh $name $hash done < playlists.txt |
号
伊希思