Red*_*pha 6 command-line software-recommendation
我是 Linux 世界的新手,在过去一年左右的时间里,我一直在使用 Windows 并编写 Visual C++。我发现 bash 似乎是 Linux 世界中最受欢迎的 shell。是否有最接近 bash 功能但具有 C/C++ 类型语法的 Linux CLI shell?
gok*_*_uf 11
有符合要求的 CSH。
来自维基百科
C shell(csh 或改进版本,tcsh,在大多数机器上)是一种 Unix shell,由 Bill Joy 在 1970 年代后期在加州大学伯克利分校读研究生时创建。它已广泛分发,从乔伊于 1978 年开始分发的 BSD Unix 系统的 2BSD 版本开始。2其他早期对这些想法或代码的贡献者是 Michael Ubell、Eric Allman、Mike O'Brien 和 Jim Kulp。
或者你可以试试 TCSH(谢谢!@muru)
来自维基百科
tcsh (/?ti??si???l/ "tee-cee-shell", /?ti???l/ "tee-shell", or as a首字母缩写词 "tee cee ess aitch") 是一个 Unix shell基于并兼容 C shell (csh)。它本质上是具有可编程命令行完成、命令行编辑和一些其他功能的 C shell。与其他常见的 shell 不同,函数不能在 tcsh 脚本中定义,用户必须使用别名(如在 csh 中)。
请注意,这些 shell 不像 bash 那样被广泛使用,因此一些 makefile 和 shell 脚本的行为可能无法预测。
Bash 支持一些 C 风格的语法。例如:
函数声明/定义在本质上类似于 C 中的函数声明/定义,除了您既不定义参数(使用位置参数$1, $2, $3, ... 获取)也不定义返回类型(Bash 根本不使用类型) ):
foo() {
# ...
}
Run Code Online (Sandbox Code Playgroud)
或者再次类似于 C 使用内联声明/定义:
foo() { #...; }
Run Code Online (Sandbox Code Playgroud)
需要注意的是,当使用内联声明/定义时,第一条和最后一条语句必须分别以空格分隔,{并且}(再次与 C 类似)每个语句必须与其他语句以分号分隔,并且最后的语句必须以分号:
foo() { command1; command2; command3; }
Run Code Online (Sandbox Code Playgroud)
为完整起见,另一种声明/定义函数的方法是使用关键字function,它不需要()函数名称后的后缀:
function foo {
#...
}
Run Code Online (Sandbox Code Playgroud)您可以通过将它们括在双括号中来评估 C 样式表达式(()):支持相当多的 C 样式运算符(包括赋值),例如:=, >, >=, ==, !=, <, <=, &&, ||, !, 等等:
$ i=0
$ j=1
$ ((i > j)) && echo True
$ ((i >= j)) && echo True
$ ((i == j)) && echo True
$ ((i != j)) && echo True
True
$ ((i < j)) && echo True
True
$ ((i <= j)) && echo True
True
$ ((i && j)) && echo True
$ ((i || j)) && echo True
True
$ ((\! i)) && echo True
True
$ ((\! j)) && echo True
$ ((i = j))
$ echo $i
1
$ echo $j
1
Run Code Online (Sandbox Code Playgroud)
这种评估 C 风格表达式的方法可以与if,while和until语句结合使用:
if((i == 0)); then
# ...
done
Run Code Online (Sandbox Code Playgroud)
while((i == 0)); do
# ...
done
Run Code Online (Sandbox Code Playgroud)
until((i == 0)); do
# ...
done
Run Code Online (Sandbox Code Playgroud)
最值得注意的是,(())还允许编写 C 风格的for循环条件:
for((i = 0; i < 3; i++)); do
# ...
done
Run Code Online (Sandbox Code Playgroud)C 样式表达式求值不支持分配求值结果;为此,您可以使用算术扩展 ( $(())),它允许进行某种 C 风格的表达式赋值:
$ i=0
$ j=1
$ k=$((i > j))
$ echo $k
0
$ k=$((i < j))
$ echo $k
1
$ x=$((1 + 2 + 3))
$ echo $x
6
Run Code Online (Sandbox Code Playgroud)还支持 C 风格的前缀/后缀自增/自减运算符:
++i
i++
--i
i--
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3897 次 |
| 最近记录: |