我有這個在我的myshellscript.txt:我爲什麼可以節省.SH文件.txt和它仍然有效,當我運行它
#!/bin/sh
if [ -f $1 ]
then
cat $1
else
echo "Sorry, not found"
fi
爲什麼,即使它是一個txt文件我用sh myshellscript.txt someotherfile.txt
我有這個在我的myshellscript.txt:我爲什麼可以節省.SH文件.txt和它仍然有效,當我運行它
#!/bin/sh
if [ -f $1 ]
then
cat $1
else
echo "Sorry, not found"
fi
爲什麼,即使它是一個txt文件我用sh myshellscript.txt someotherfile.txt
仍然可以運行它,因爲你把家當(魔線)中的第一行:
#!/bin/sh
這使得你的shell知道,這是一個腳本,它可以運行。至少如果您使文件可執行(chmod +x myshellscript.txt
)。 UNIX並不關心文件擴展名,就像Windows一樣,所以它不依賴於文件擴展名,不管腳本是否可執行。
當使用'sh myshellscript.txt someotherfile.txt'運行時,它是否以shebang開頭並不重要 - 或者shebang是說'#!/ bin/sh'還是'#!/ usr/bin/kleptomaniac'或其他任何東西。當腳本文件可執行並且使用'myshellscript.txt someotherfile.txt'運行時,shebang很重要。 – 2015-02-09 15:20:01
這就是爲什麼你要設置執行位的原因。 – user1438038 2015-02-09 15:47:10
缺少'#!'行的情況下,默認情況下使用'/ bin/sh'執行腳本(省略'#!'不是一個好主意。) – 2015-02-09 15:47:55
因爲unix不關心文件擴展名。你可以重命名你的shell腳本'cutekittens.jpg',它仍然可以工作。只要它具有執行位('chmod + x')並以'#!...'shebang開頭,它將是一個程序,而不管文件名是什麼。當你直接將它傳遞給'sh'時,作爲命令行參數,你根本不需要執行位。 – 2015-02-09 15:04:33