我的烏拉拉練功坊

請來參觀移植到 Google Firebase 的成績 https://oolala.xyz/ken73chen/

2019年9月25日

shell 傳參數給 shell

大概是這樣子,就是從一個 shell,根據使用者用的參數,要去背景執行另外一個 shell,然後要在一個 shell 內完成,因為不想在目錄出現一大堆 .sh。

也不算太難,只是有一個 -s 的參數,花了我不少時間。

結果就像這樣: #!/bin/sh name=$1 echo shell 1, name is $name PID $$ cat <<"EOF" | sh -s $name & name2=$1 echo Engage shell named $name2/$name, PID $$ echo $$ > /tmp/${name2}.pid while [ 1 ] do sleep 1 done EOF sleep 3 echo Kill $name kill -TERM `cat /tmp/${name}.pid` rm -f /tmp/${name}.pid 因為要在一個 shell 內完成,所以是用 cat <<"EOF" 的方法,把 shell pipe 給 sh 去執行,那要傳過去的參數呢?是用 -s 傳進去的。
If the -s option is present, or if no arguments remain after option processing, then commands are read from 
the standard input. This option allows the positional parameters to be set when invoking an interactive shell. 

執行結果:



要讚嘆一下微軟,那個 WSL (Windows Subsystem for Linux) 真是太方便了,我是安裝 Alpine WSL,瞬間就可以啟動,試 shell 太方便了!

沒有留言:

張貼留言