标签: ksh

今天最好的(便携式和可维护的)Shell Scripting语言是什么?

我知道这个问题有点 - 过去开始的"宗教"战争,可能没有一个正确的答案.但是在使用ksh和csh过去3到3年之后,经历了从一个移植到另一个的痛苦或者将一个共同的逻辑应用于多个版本(读作遗留代码),如果我正在编写一个新脚本,我会选择ksh,但是出于强迫而不是选择.除了ksh/csh之外还有更好的选择吗?也可以在Unix(Solaris/HP/IBM/FreeBSD)和Linux上运行(如果我不是要求太多,或者如果所有Linux风格都有意义的话)

等待建议......

和平:) Devang Kamdar

unix bash shell ksh csh

4
推荐指数
1
解决办法
2424
查看次数

SSH - ksh:git:找不到

我在Solaris服务器上运行GIT.

从Windows机器上我安装了cygwin来尝试克隆服务器上托管的存储库.

我做以下事情:

$ git clone username@server:project.git
ksh: git-upload-pack: not found

所以我试试

$ ssh username@server echo \$PATH
/usr/bin

似乎git不在/ usr/bin /中,而是在/ usr/local/bin /中.我尝试在服务器上的主目录中更改.bashrc中的PATH以添加/ usr/local/bin/...但它似乎不起作用.

我究竟做错了什么 ?

git ssh bash ksh

4
推荐指数
1
解决办法
4651
查看次数

kill -9 + 禁用来自 kill 命令的消息(标准输出)

我编写了以下脚本,如果 grep 在文件中找不到相关字符串,它会启用 20 秒的超时。

该脚本运行良好,但脚本的输出是这样的:

./test: line 11: 30039: Killed
Run Code Online (Sandbox Code Playgroud)
  1. 如何从 kill 命令中禁用此消息?

  2. 如果进程不存在,如何告诉kill命令忽略?

THX
耶尔

#!/bin/ksh  
( sleep 20 ; [[ ! -z ` ps -ef | grep "qsRw -m1" | awk '{print $2}' ` ]] && kill -9  2>/dev/null ` ps -ef | grep "qsRw -m1" | awk '{print $2}' `   ; sleep 1 ) &
RESULT=$! 
print "the proccess:"$RESULT
grep -qsRw -m1 "monitohhhhhhhr" /var
if [[ $? -ne 0 ]]
then
print "kill "$RESULT
  kill -9 …
Run Code Online (Sandbox Code Playgroud)

linux ksh

4
推荐指数
1
解决办法
6101
查看次数

在sed中使用反向引用正则表达式

我想删除文件中带有单个字符的多个空格.例

cat      kill    rat
dog      kill    cat
Run Code Online (Sandbox Code Playgroud)

我使用了以下正则表达式,它似乎在http://www.regexpal.com/中匹配但在sed中不起作用.

([^ ])*([ ])*
Run Code Online (Sandbox Code Playgroud)

我像这样使用了sed命令:

sed s/\(\[\^\ \]\)*\(\[\ \]\)*/\$1\|/g < inputfile
Run Code Online (Sandbox Code Playgroud)

我预计,

cat|kill|rat
dog|kill|cat
Run Code Online (Sandbox Code Playgroud)

但我无法让它发挥作用.任何帮助将非常感激.谢谢.

编辑:请注意猫/狗可以是任何字符而不是空格.

regex unix aix ksh sed

4
推荐指数
1
解决办法
1万
查看次数

两种样式的检查在ksh中返回值

在ksh shell中,我想在运行命令后检查返回值,我写了两个样式:

if [ $? -ne 0 ] ; then
    echo "failed!"
    exit 1
else
    exit 0
fi


[ $? -ne 0 ] && echo "failed!" && exit 1
Run Code Online (Sandbox Code Playgroud)

它们是等价的吗?如果没有,如果我想把它写成一行,我该怎么办?

shell ksh

4
推荐指数
1
解决办法
2万
查看次数

在AWK命令中将变量传递给NR不起作用

嗨我正在尝试使用awk命令找到正则表达式后打印5行.我有以下内容:

line_start=$(awk '/regex/{print NR}' file)
let line_end=$line_start+4
awk 'NR==$line_start, NR==$line_end' file
Run Code Online (Sandbox Code Playgroud)

这不会打印任何东西.它没有挂起,只是继续下一行.

我研究了一些类似的问题,并看到人们使用-v选项.我应该在这里使用它,他们的情况是更大的awk脚本.

顺便说一下,我正在使用Kornshell

谢谢!

unix shell awk ksh

4
推荐指数
1
解决办法
1万
查看次数

ksh将命令的结果存储到变量中

我想将命令的结果存储到我的shell脚本中的变量中.我似乎无法让它工作.我想要目录中最近日期的文件.

PRODUCT= 'ls -t /some/dir/file* | head -1 | xargs -n1 basename'
Run Code Online (Sandbox Code Playgroud)

它不会工作

linux command ksh

4
推荐指数
1
解决办法
3万
查看次数

在与另一个脚本相同的行上定义shell脚本变量

我遇到了ksh脚本中的行,这些脚本声明了一个变量并在同一行上提供了另一个shell脚本.例如:

MYVARIABLE="abc" . ~core/script.sh
Run Code Online (Sandbox Code Playgroud)

这是否会产生与单独声明它们不同的行为?例如:

MYVARIABLE="abc"
. ~core/script.sh
Run Code Online (Sandbox Code Playgroud)

unix shell ksh

4
推荐指数
1
解决办法
493
查看次数

将 awk 的结果放入数组

当我在终端上运行以下命令时,

awk /984/ $files | awk -F, '{OFS=",";print $1,$4,$17}'
Run Code Online (Sandbox Code Playgroud)

在哪里,

files=`ls`
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

2013/08/18 12:51:37,11,724
2013/08/18 12:48:02,227,84769
Run Code Online (Sandbox Code Playgroud)

我希望创建一个脚本,运行该命令并以这种方式将上述结果分配给一个数组:(将行作为单独的元素)

array[0] = 2013/08/18 12:51:37,11,724
array[1] = 2013/08/18 12:48:02,227,84769
Run Code Online (Sandbox Code Playgroud)

但,

两者都不,

result=($(awk /string/ $files | awk -F, '{OFS=",";print $1,$4,$17}'))
Run Code Online (Sandbox Code Playgroud)

也不,

result2=`awk /string/ $files | awk -F, '{OFS=",";print $1,$4,$17}'`
Run Code Online (Sandbox Code Playgroud)

达到了我的目的。

如何获得我指定的数组?

bash shell scripting awk ksh

4
推荐指数
1
解决办法
5057
查看次数

KornShell 错误 0403-004 使用此命令指定参数

此 KornShell 代码引发以下错误:

测试文件

#! /usr/bin/ksh

if [ ${fooVariable} = "" ]; then
    fooVariable="fooString"
fi

echo "${fooVariable}"
Run Code Online (Sandbox Code Playgroud)

错误:

@:/tmp #./test.ksh
./test.ksh[3]: test: 0403-004 Specify a parameter with this command.
Run Code Online (Sandbox Code Playgroud)

为什么会抛出此错误以及如何修复它?

shell scripting ksh

4
推荐指数
1
解决办法
9930
查看次数

标签 统计

ksh ×10

shell ×6

unix ×4

bash ×3

awk ×2

linux ×2

scripting ×2

aix ×1

command ×1

csh ×1

git ×1

regex ×1

sed ×1

ssh ×1