2016-11-01 7 views
0

私はLinux(現在はUbuntuを使用しています)でのシェルスクリプトの新機能です。 私はシンプルな、次のスクリプト(名yourName.sh)を書いた:bashとtcshの相違スクリプトの動作

What is your first name? 
yourName.sh: line 3: syntax error near unexpected token 'newline' 
yourName.sh: line 3: 'set firstName = $<' 

:私は

bash yourName.sh 

でスクリプトを実行すると、私は次のエラーを取得する、今

#!/usr/bin/tcsh -f 
echo "What is your first name?" 
set firstName = $< 
echo "What is your last name?" 
set lastName = $< 
echo "Hello $firstName $lastName" 

を私はtcsh yourName.shと同じスクリプトを実行するとすべて正常に動作します。 詳細な回答は明らかですが、誰かが私に「bash」と「tcsh」の違いを説明している記事を参照するだけでも巨大な助けになるでしょう。

+5

構文が異なる2つの異なるシェルです。あなたが何を期待しているのか分かりません。 –

+2

学習エネルギーをtcshスクリプト以外のものに費やすことを検討したいかもしれません。そのようなスキルはせいぜい難解だと考えられます。シェルスクリプトの作成が求められる場合、bourneやbashはほとんどの環境で最適なオプションになります。また、[cshは実際に有害であると考えられている](https://www-uxsup.csx.cam.ac.uk/misc/csh.html)が提案されていると考えてください。 tcshは正確にcshではありませんが、構造上の制限の多くを共有しています。 – ghoti

答えて

0

tcshbash異なる祖先有する - tcshC shell, cshの子孫であるbashは、オリジナルBourne shell, shの子孫です。それらはほとんど互換性がありません。

0

これはスクリプトのbash版です。キーボードから入力を取得するには、readコマンドを使用します。

echo "What is your first name?" 
read -r firstName 
echo "What is your last name?" 
read -r lastName 
echo "Hello $firstName $lastName" 

read -r raw input - disables interpretion of backslash escapes and line-continuation in the read data

+0

'read -r'です。 'LC_ALL = C man read | grep - -r' – andlrc

+0

@andlrc;私はansをrオプションで更新しました。ありがとう –

1

私は個人的には常に別のシェルタイプ間の構文の違いを発見するためにこの記事を使用しています

リンク:http://hyperpolyglot.org/unix-shells

私はを強くはあなたがTSCH上のbashを使用してお勧めしますしかし、特にあなたがLinuxに慣れていないならば。これははるかに汎用性があり、単純に言えば、より多くの人々が使用しています。つまり、問題が発生した場合は、tschよりもはるかに多くのドキュメントが手元にあります。

関連する問題