2015-02-09 22 views
0

我有這個在我的myshellscript.txt:我爲什麼可以節省.SH文件.txt和它仍然有效,當我運行它

#!/bin/sh 
if [ -f $1 ] 
then 
cat $1 
else 
echo "Sorry, not found" 
fi 

爲什麼,即使它是一個txt文件我用sh myshellscript.txt someotherfile.txt

+3

因爲unix不關心文件擴展名。你可以重命名你的shell腳本'cutekittens.jpg',它仍然可以工作。只要它具有執行位('chmod + x')並以'#!...'shebang開頭,它將是一個程序,而不管文件名是什麼。當你直接將它傳遞給'sh'時,作爲命令行參數,你根本不需要執行位。 – 2015-02-09 15:04:33

回答

1

仍然可以運行它,因爲你把家當(魔線)中的第一行:

#!/bin/sh 

這使得你的shell知道,這是一個腳本,它可以運行。至少如果您使文件可執行(chmod +x myshellscript.txt)。 UNIX並不關心文件擴展名,就像Windows一樣,所以它不依賴於文件擴展名,不管腳本是否可執行。

+0

當使用'sh myshellscript.txt someotherfile.txt'運行時,它是否以shebang開頭並不重要 - 或者shebang是說'#!/ bin/sh'還是'#!/ usr/bin/kleptomaniac'或其他任何東西。當腳本文件可執行並且使用'myshellscript.txt someotherfile.txt'運行時,shebang很重要。 – 2015-02-09 15:20:01

+0

這就是爲什麼你要設置執行位的原因。 – user1438038 2015-02-09 15:47:10

+0

缺少'#!'行的情況下,默認情況下使用'/ bin/sh'執行腳本(省略'#!'不是一個好主意。) – 2015-02-09 15:47:55

相關問題