最近在學習shell腳本,寫了一個簡單的demo,想要實作的是cd一個檔案夾然后再創建檔案,可是執行了shell腳本的時候,卻發現cd命令沒有生效,導致我的檔案夾和檔案都沒有創建
# !/bin/bash
read -p "請輸入檔案夾的名字:" dirName
if [ -e $dirName ];then
echo "$dirName 是存在的即將進入檔案夾"
cd $dirNamem
echo "即將創建檔案名為test"
touch test.c
else
echo "該檔案夾不存在,即將創建檔案夾"
mkdir $dirName
echo "即將進入$dirName 檔案夾中"
cd $dirName
去查了一下資料,發現了這是因為shell在執行腳本時,會創建一個子shell,并在子shell中逐個執行腳本中的指令; 而子shell中從父shell中繼承了環境變數,但是執行后不會改變父shell的環境變數
我使用了兩種方法去使我的cd生效
- 使用source命令
在執行shell腳本時,不使用 ./XXX.sh,而是使用source xxx.sh的方法,這個會創建檔案,但直接回到了~目錄(沒有解決cd不) - 在cd后面增加exec /bin/bash
這個指令是指bash腳本在其當前環境或其子級環境上運行,但不在其父級環境上運行
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/213001.html
標籤:其他
上一篇:hyper-v開虛機
