Questions tagged «ksh»

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

3
将数组传递给函数的最正确方法是什么?
考虑我有一个非常大的数组$large_list,有没有办法编写一个将数组作为参数的函数?例如: echo_idx_array () { arr="$1" idx="$2" echo "${arr[$idx]}" } 做这样的事情的通常策略是什么?我试着给变量,$large_list但它是空的。 我愿意修改该函数以使其适应参数列表中的任何更改。 作为记录,我正在使用ksh88,并且正在寻找尽可能便携的答案。 编辑:到目前为止,我能想到的最好的办法是遍历数组并将每个元素作为参数发送给函数。这看起来非常丑陋且容易出错,更不用说它一定会很快达到某个极限。这是我所做的: foo () { echo $* } cmd="foo " while [[ $i -lt $MAX_ARR_SIZE ]]; do cmd="$cmd ${large_list[$i]}" ((i=i+1)) done eval $cmd 有没有更好的事情要做?
8 shell  ksh  array 

5
如何在Korn Shell中获取subshel​​l的PID(相当于$ BASHPID)
在bash中,您有一个方便的变量:$ BASHPID wich始终返回当前运行的子Shell的PID。如何在ksh中获取子外壳的PID?例如,请参见下面的代码: #!/usr/bin/ksh93 echo "PID at start: $$" function run_in_background { echo "PID in run_in_background $$" run_something & echo "PID of backgrounded run_something: $!" } function run_something { echo "*** PID in run_something: $$" sleep 10; } run_in_background echo "PID of run in background $!" 输出以下内容: PID at start: …

4
RHEL 6和CentOS 6中缺少pdksh?
pdksh当我尝试通过RHEL 6或CentOS 6安装该软件包时,该软件包不存在yum。 所以我的问题是: 为什么默认存储库中不再提供它?它在版本5.x中可用。 有替换壳吗? 那依赖的程序pdksh呢?他们可以使用替换壳吗? 我的解决方法是使用版本5的软件包,我认为这不是正确的解决方案,我应该比解决方法更好地了解它。 我主要关心的是Oracle数据库。它要求pdksh,因此使用替代外壳而不是一个问题pdksh?
8 centos  rhel  yum  ksh 

4
Shell编程,避免使用临时文件
我经常编写遵循相同模式的KSH Shell脚本: (1)从一个或多个命令检索输出 (2)使用grep | cut | awk | sed格式化并打印到屏幕或文件中 为了做到这一点,我经常将(1)的输出存储在一个临时文件中,然后对该文件进行(2)的格式化。 以该代码为例: TMPFILE=file.tmp # If tmpfile exists rm it. [ -f $TMPFILE ] && rm -f $TMPFILE for SERVICE in $(myfunc); do getInfo $SERVICE > $TMPFILE # Store raw output in the TMPFILE # I retrieve the relevant data from …
8 shell  scripting  ksh 

2
可怜的GNU并行在ksh中实现?
我想使用GNU parallel的功能,在该功能中它可以执行命令和它并行输入的列表,并在完成后将其吐出,但是,我不想在所有服务器上并行安装GNU。 还是并行版本的xargs? GNU Parallel的功能是否有ksh实现?在这种情况下,不必像GNU Parallel那样按顺序完成,只要可以通过管道或存储所有输出即可。我也想避免使用临时文件。

2
在OpenBSD的ksh中添加Ctrl-L作为“清除”热键
我一直在寻找一种使用方法Ctrl- L清除监视器,而不是clear每次都键入。除了一个对我不起作用的补丁外,我什么也没找到。如何在我的OpenBSD盒(使用ksh作为外壳)中添加热键/快捷方式? [*] OpenBSD的ksh.kshrc [*] Ctrl-l(十六进制= 0xc): #读取键; echo -n $ key> file.txt; hexdump file.txt ^ L 0000000 000c 0000001 #

1
ksh作废-eq的原因
Ksh的最新版本已过时,不再使用-eq在[[ ]]块内使用,(( ))而是取而代之。为什么是这样?我找不到任何有关(( ))over 优势的文档[[ ]],而且我发现该语法更加明显。 例如: #!/bin/ksh var=1 if [[ $var -eq 1 ]] then echo ALPHA fi 给 [adam@hendrix test]$ ksh -n test.sh test.sh: warning: line 3: -eq within [[...]] obsolete, use ((...))

5
如何为同一用户的不同会话设置单独的命令历史记录?
我在某些Unix服务器上遇到此问题。当我为同一用户打开不同的会话时,所有会话都共享命令历史记录。如果我误按Ctrl-P或up arrow仅按Enter,就会产生问题。有一次我rm -rf *幸运地结束了运行,当时我所在的目录中没有删除文件的权限。 如何为同一用户的不同会话设置单独的命令历史记录?大多数时候,我使用的是ksh和tcsh shell。

2
ksh:将awk命令的输出存储在数组中
我有以下awk命令: awk -F ' ' '{ print $NF }' log filename 它给出的输出如下: 06:00:00 parameters: SDS (2) no no no no doc=4000000000). information: 0 5898 5898 06:06:25 问题是我需要将其保存在数组中。例如当我打印或回显$array[0] 我应该得到 06:00:00 同样 $array[1] = parameters: . . . $array[n] = 06:06:25 我的最终目标是使用打印语句打印它们,即 printf("start time: %d and end time: %d", array[0], array[n]") 输出量 …
1 ksh 
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.