c shell 脚本来检查 Git 是否在系统中可用

c shell script to check if Git is available in the system

我目前正在创建一个脚本来对我们的软件框架的文件进行一些操作。现在我们已经移动到 Git,此脚本需要设置一些功能(即:忽略某些文件的本地更改)。

所以我在考虑这个 C shell 脚本来检查系统中是否安装了 Git,然后再执行某些 Git 操作以与其他系统向后兼容而无需 Git已安装。

我正在考虑使用 whichwhereis,但我似乎无法将其与 C shell if() 语句集成。

我不是普通的 csh 用户,但是 man csh 说需要在执行命令后检查 status 变量的值,因为它包含 return最后一个命令的值:

status The status returned by the last command. If it terminated
       abnormally, then 0200 is added to the status. Built-in
       commands that fail return exit status 1, all other
       built-in commands set status to 0.

例如:

$ csh
% which git
/usr/bin/git
% echo $status
0
% which non-existing-command
non-existing-command: Command not found.
% echo $status
1
%

知道写一个if条件很容易:

#!/usr/bin/env csh

which git > /dev/null
if ($status == 0) then
    echo git found
else
    echo git not found. Exiting.
    exit 1
endif

如果您真的需要 csh,这行得通:

if ( -x `which git` ) then
    ... what to do if it can be run ...
else
    ... what to do if it cannot
endif

-x 测试检查给定路径是否可执行,反引号 运行 which 查找路径(或打印 git: command not found,这不会可执行)。

一样,如果您正在使用 tcsh(或者有一个实际上只是 tcsh 的 csh,例如在现代 Mac 和 FreeBSD 上就是这种情况),您可以只使用:

if ( -X git ) then ...

不过,如果你有一个理智的 shell,你会过得更好。