Questions tagged «ksh»

Korn外壳程序(ksh)是具有高级脚本功能的外壳程序,通常在商业单位和某些BSD系统上找到,但很少在Linux上使用。


4
为什么带无引号的空格的参数扩展在双括号“ [[”内有效,而在单括号“ [”内无效?
我对使用单括号或双括号感到困惑。看下面的代码: dir="/home/mazimi/VirtualBox VMs" if [[ -d ${dir} ]]; then echo "yep" fi 尽管字符串包含空格,它仍可以完美地工作。但是当我将其更改为单括号时: dir="/home/mazimi/VirtualBox VMs" if [ -d ${dir} ]; then echo "yep" fi 它说: ./script.sh: line 5: [: /home/mazimi/VirtualBox: binary operator expected 当我将其更改为: dir="/home/mazimi/VirtualBox VMs" if [ -d "${dir}" ]; then echo "yep" fi 它工作正常。有人可以解释发生了什么吗?什么时候应该在变量周围"${var}"加上双引号,以防止空格引起问题?
86 bash  quoting  ksh  test 


8
$ *和$ @有什么区别?
考虑以下代码: foo () { echo $* } bar () { echo $@ } foo 1 2 3 4 bar 1 2 3 4 它输出: 1 2 3 4 1 2 3 4 我正在使用Ksh88,但是我也对其他常见的shell感兴趣。如果您碰巧知道特定外壳的任何特殊性,请提及它们。 我在Solaris的Ksh手册页中发现了以下问题: $ *和$ @的含义在不加引号或用作参数分配值或文件名时相同。但是,当用作命令参数时,$ *等效于``$ 1d $ 2d ...'',其中d是IFS变量的第一个字符,而$ @等效于$ 1 $ 2 .... 我尝试修改IFS变量,但没有修改输出。也许我做错了什么?
72 shell  quoting  ksh  arguments 

4
外壳ksh93死了吗?
在2013年1月10日,Glenn Fowler将其发布到了ast-users邮件列表中: 正如在AST和UWIN列表中多次指出的那样,AT&T对OpenSouce软件的支持很少,这就是为什么我们只有很少的人参与我们庞大的AST软件集合。尽管如此,ksh,nmake,vczip,UWIN等AST工具会继续在多个AT&T的项目使用。 事实证明,并非只有软件缺乏支持:dgk (David Korn)(AT&T研究员,已有36年的服务)和gsf (Glenn Fowler)(AT&T研究员,已有29年的服务)已终止,自10月生效10.我们的第三大合作伙伴Phong Vo(AT&T研究员,已有32年的服务经验)几个月前离开Goog​​le。UWIN的维护者Jeff Fellin仍在AT&T工作,并为某些关键操作提供UWIN支持。 dgk和gsf都将继续在AST软件上运行,并且实际上可能有更多的时间(至少在短期内)专注于它。 下载站点和邮件组将至少在未来几个月内保留在AT&T中。我们的AT&T同事AST用户和错误检测器Dr.ek将维护该站点。我们已经保护astopen.org域,并正在研究非AT&T托管选项,包括带有错误跟踪的存储库。 变更过程需要时间。用户社区的耐心将不胜感激。在本质上稳定了近30年的环境中工作后,有3周的时间来计划个人,职业和黑客攻击的未来,实在令人震惊。计划巩固后,将通知用户组。 康恩(Korn)自己的维基百科页面上说,他曾在AT&T Labs Research工作到2013年……但是他现在正在为Google 所需的引文工作。一个dgkorn GitHub的用户帐户是在2014年11月创建的,但它一直自认为时间恰好为0公众捐款的来源,并订阅到尽可能多的回购。 自2013年以来,相关邮件列表的活跃度逐渐下降。例如,2013年第四季度ast-developers列表在 2013-12-01之前发布了156条消息,但是2015年第四季度的同一列表仅列出了三条消息,这是其中最后一条: 主题:回复:[ast-developers]将ast过渡到GitHub 是否打算将ast代码库转换为GitHub之类的源代码存储库?这将使社区更容易做出贡献。我担心如果没有这样的协作环境,与错误相关的开发将因错误报告和源代码补丁在以太中丢失而停滞不前。 是否有人可以在某个地方发布完整的git repo(repo.or.cz,github,等等)?Git服务器已经关闭了很长时间,现在甚至www2.research.att.com(204.178.8.28)都关闭了。 这使人们对Kornshell的未来感到惊讶。它死了吗?我们看不到更多的发布了吗? 而且,的确,尽管AT&T在其实验室研究目标网页上列出了所有AST链接,但这些链接似乎都不起作用。这些与kornshell.com上列出的相同死链接可供下载。即使当前服务器状态暂时只证明是临时的,干,的邮件列表似乎也不是一件好事。 因此,现在已将角壳放空了吗?还是在其他地方沿着这些路线有更多活动?

5
仅使用du文件获取大小
如何使用du命令获取所有文件及其子目录中所有文件的大小。 我正在尝试以下命令来获取所有文件(和子目录中的文件)的大小 find . -type f | du -a 但这也会打印出文件夹的大小。如何获得所有文件和子目录中文件大小的列表?我也尝试了,exec flag但我不确定在执行findinto 的结果后如何将输出传递到另一个命令du。 操作系统是带有ksh shell的AIX 6.1。
49 files  find  disk-usage  aix  ksh 


3
导出其中带有点(。)的变量
如何导出其中带有点的变量。我尝试时得到“无效的变量名”: export my.home=/tmp/someDir -ksh: my.home=/tmp/someDir: invalid variable name 即使转义元字符点(。)也无济于事 $ export my\.home=/tmp/someDir export: my.home=/tmp/someDir: is not an identifier

3
使用sed为solaris上的命令的输出着色
我有一个必须在linux和solaris上都可以使用的ksh脚本。我正在尝试为特定命令的输出着色。它可以在Linux(特别是RHEL6)上运行,但不能在solaris(SunOS 5.10)上运行。 在Linux上的命令(输出“测试”正确地显示为红色): [amartin@linuxbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' test 关于so​​laris的命令(输出“ test”未着色): [amartin@sunbox:~]$ echo "test" | sed 's,.*,\x1B[31m&\x1B[0m,' x1B[31mtestx1B[0m 有没有办法制作此命令,使输出为红色,而输出中没有原始代码?我不能更改'echo'命令,因为这只是我实际运行的命令的填充。




2
函数,别名和可执行文件中的连字符是否存在问题?
在我的测试中(在Bash和Z Shell中),我发现定义函数或别名或名称中带有连字符的可执行Shell脚本没有问题,但是我不确定在所有Shell和所有用例中都可以做到这一点。 我想这样做的原因是连字符比下划线更容易键入,因此更快捷,更流畅。 我不敢相信这不是问题的一个原因是,在某些语言(例如Ruby)中,即使连字符之间没有空格,连字符也会被解释为减号。如果在某些shell中可能会发生类似的事情,这也不会令我感到惊讶,在连字符中连字符被解释为即使没有空格也会发出信号。 我有点怀疑的另一个原因是我的文本编辑器搞砸了带有连字符的函数的语法高亮显示。(但是,当然,这很可能只是shell脚本的语法高亮显示配置中的一个错误。) 有什么理由避免连字符吗?
25 bash  shell  zsh  ksh  csh 

4
在find -exec调用中执行用户定义的函数
我在Solaris 10上,并且已经使用ksh(88),bash(3.00)和zsh(4.2.1)测试了以下内容。 以下代码不会产生任何结果: function foo { echo "Hello World" } find somedir -exec foo \; 这一发现不匹配多个文件(如更换-exec ...用-print),并从外面叫时功能完美的作品find调用。 这是该man find页面所说的-exec: -exec命令如果执行的命令返回a,则为true。 零值作为退出状态。结尾 命令必须由逃逸者标点 分号(;)。命令参数{}是 替换为当前路径名。如果 -exec的最后一个参数是{},而您 指定+而不是分号(;), 该命令被调用的次数更少, {}替换为路径名组。如果 该命令的任何调用都会返回一个 非零值作为退出状态,找到 返回非零退出状态。 我可能会逃脱做这样的事情: for f in $(find somedir); do foo done 但是我担心要处理字段分隔符问题。 是否可以从调用中调用Shell函数(在同一脚本中定义,让我们不用担心范围问题)find ... -exec ...? 我尝试了两者/usr/bin/find,/bin/find并得到了相同的结果。

6
如何从任何URL获得响应?
我被要求编写一个Shell脚本来检查我的项目的URL是否正常运行。 我试图在互联网上找到一些提示,但是我得到的只是关于检查URL是否存在的提示。 我首先尝试过wget。 wget -S --spider https://genesis-dev.webbank.ssmb.com:21589/gop-ui/app.jsp 2>&1 | awk '/^ /' if [ $? -ne 0 ] then echo "Server is UP" else echo "Server is down" fi 我的下一个尝试是curl。 curl -ivs https://genesis-dev.webbank.ssmb.com:21589/opconsole-sit/opconsole.html# if [ $? -ne 0 ] then echo "Server is UP" else echo "Server is down" fi …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.