fastex
たとえば、2つの可能なパラメータ(g
または)を使用してt
スクリプトを実行したいとしますfastex g
。
私が呼び出す引数に応じて、geany $file
またはtexstudio $file
。これが選択エディタです。
頑張った
editor=$1
if ["$1" = "g"]; then
geany "$file".tex
exit 1
else
linha=$(wc -l < "$file".tex)
texstudio --line $linha "$file".tex
exit 1
fi
ただし、出力fastex.sh g
はあり/usr/bin/fastex.sh: 31: [g: not found
、常にオンになっていますtexstudio
。合格しても同じだt
。
ベストアンサー1
末尾の空白は、実際には引数(シェルで解釈されたり解釈されたりしない可能性があります)を読み取るためのコマンド(たとえば)である
if [
ため、必要です。を使用すると、シェルの内部ロジックが使用されます(新しいプロセスが開始されないため、より高速です)。シェルは組み込み関数として解釈できますが、 を使用してこの機能をオフにすることができます(実際には新しいプロセスを開始できます)。[
test
[[
[
test
enable
=
比較演算子です~へしかし、他の場所では代入演算子でもあります。とtest
は=
POSIX規格ですが、POSIX規格を追求しない限り==
(で識別される[[
)を使用するのが合理的な選択肢のようです。これは、シェルコンテキスト依存の意味の不一致をより完全にするためです=
。exit 1
- エディタの戻り値を効果的に破棄するのはなぜですか?完全に無視するか、exec
スクリプトをエディタに置き換えます。
#!/bin/bash
editor=$1
if [[ "$1" == "g" ]]; then
exec geany "$file.tex"
else
linha=$(wc -l < "$file.tex")
exec texstudio --line $linha "$file.tex"
fi