也不算太難,只是有一個 -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 太方便了!
沒有留言:
張貼留言