ksh相关内容
在一个外壳脚本中,我必须运行一个命令,我需要确定该命令的返回代码是什么,但结果是该命令的输出转到了stderr,还输出了用户的密码(不幸的是,这是该命令的一个参数;我知道是错误的)。 我至少要筛选密码,使其不会被重新显示。 cmd ${OPTIONS} RETURNCODE=$? 给我该命令的返回代码 cmd ${OPTIONS} 3>&1 1>&2 2>&3 | sed "
..
我想写这样的代码: command="some command" safeRunCommand $command safeRunCommand() { cmnd=$1 $($cmnd) if [ $? != 0 ]; then printf "Error when executing command: '$command'" exit $ER
..
..
理想情况下,我可以使用像 这样的程序 find [文件或目录名称] 报告具有匹配文件名/目录的路径.不幸的是,这似乎只检查当前目录,而不是整个文件夹. 我也试过 locate 和 which,但没有找到该文件,即使我知道它在某处的计算机上. 解决方案 “不幸的是,这似乎只检查当前目录,而不是整个文件夹".大概您的意思是它不在子目录中.要解决此问题,请使用 find -name
..
有没有办法在 KornShell (ksh) 中使用“for"来实现以下内容?这是 C 等效项: for(i=1;i 我想知道这是否可以仅使用“for"而不是“while"来实现 我尝试了以下方法,似乎不起作用. for i in [1-20]做打印 $i完毕 请告诉我您的想法和解决方案. 解决方案 不幸的是,它看起来好像 ksh 不支持基于范围的大括号扩展或支持 (( ))
..
对于将一个好的 bash/ksh 脚本模板用作所有新创建脚本的标准,您有什么建议? 我通常以注释掉的标题开头(在 #! 行之后),其中包含文件名、概要、用法、返回值、作者、更改日志,并且适合 80 字符线. 我以双哈希符号开头的所有文档行 ## 以便我可以轻松地为它们 grep 并且本地 var 名称以“__"开头. 还有其他最佳做法吗?尖端?命名约定?返回码呢? 关于版本
..
我一直认为子shell不是子进程,而是另一个同一进程中的shell环境. 我使用一组基本的内置函数: (echo "Hello";read) 在另一个终端上: ps -t pts/0PID TTY 时间 CMD20104 分/0 00:00:00 ksh 因此,kornShell (ksh) 中没有子进程. 输入 bash,给定相同的命令,它的行为似乎有所不同: PID T
..
我有一些 shell 命令.我想将输出写入标准输出并将其保存到变量中.我想用一个命令解决它.这些东西我都试过了. ls >$VAR # 将输出重定向到名称存储在 $VAR 中的文件ls |tee -a $VAR # 写入标准输出以及名称存储在 $VAR 中的文件VAR=`ls` # 输出到$VAR,但不发送到标准输出VAR=`ls`;echo $VAR # 好的,它可以工作,但这是两个命令 有
..
我想要类似 C 中的 getche() 的选项.如何从命令行读取单个字符输入? 使用read命令可以吗? 解决方案 在ksh中基本可以做到: stty rawREPLY=$(dd bs=1 count=1 2>/dev/null)stty-raw
..
我们服务器上有人运行了 sed -i 's/$var >>$var2/$var >$var2/* 将插入更改为在公共目录中的某些 bash 脚本中覆盖.没什么大不了的,它首先用 grep 进行了测试,它返回了预期的结果,只有他的文件会被触及. 他运行了脚本,现在文件夹中 1400 个文件中的 1200 个文件有了新的修改日期,但据我们所知,实际上只有他的一小部分文件被更改了. 为什么
..
对相同的输入使用相同的 sort 命令在不同的机器上会产生不同的结果.我该如何解决? 解决方案 手册页 在 OS X 上说: ******* WARNING ******* 环境指定的区域设置会影响排序顺序.设置 LC_ALL=C 得到使用本机字节值的传统排序顺序. 这可能会解释一些事情. 如果您的某些系统不支持区域设置,它们将默认为该区域设置 (C),因此您不必在这些系
..
我正在做某些文本处理操作,最后能够得到一个这样的文件 印度苏丹日本法国 现在我想在上面的文件中添加一个注释,就像在最终文件中一样,它应该是 印度 |国家苏丹 |国家日本 |国家法国 |国家 喜欢整个文件中的相同评论.我该怎么做? 解决方案 方法很多: sed:用给定的文本替换$(行尾). $ sed 's/$/|国家/'文件印度 |国家苏丹 |国家日本 |国家法国 |国家
..
我有一个 shell 脚本,它执行以下操作将当前日期存储在变量“dt"中: 日期 "+%a %d/%m/%Y" |读取数据回声 ${dt} 我将如何将 yesterday 日期放入变量中? 基本上我想要实现的是使用 grep 从日志文件中提取所有昨天的行,因为日志中的每一行都包含“Mon 01/02/2010"格式的日期. 非常感谢 解决方案 如果你有 Perl 可用(并且
..
我有两个文件 (file1.txt & file2.txt ),文件只是示例. 如何合并两个文件,以创建文件 - merge_files.txt 示例 3 我现在在写 ksh 脚本,所以合并可以用 ksh、awk、sed、perl 一个 liner ...等来完成 背景 - 为什么我需要合并文件:我的目标是将旧文件(存在于第一个字段中)重命名为新文件 (存在于第二个字段中) ,
..
我只是想了解 shell 中的以下代码行.它用于获取当前工作目录.我知道 $(variable) 名称返回变量名称内的值,但是 $(command) 应该返回什么?执行命令后是否返回值?在这种情况下,我们可以使用 ` 来执行命令. CWD="$(cd "$(dirname $0)"; pwd)" 在不同版本的shell中也可以从以下代码行中获取相同的输出 DIR="$( cd "$( dir
..
我正在编写一个在 AIX 上的 KornShell (ksh) 下运行的 shell 脚本.我想使用 mkdir 命令来创建一个目录.但是目录可能已经存在,在这种情况下我不想做任何事情.所以我想要么测试看看目录不存在,要么抑制 mkdir 在尝试创建现有目录时抛出的“文件存在"错误. 我怎样才能最好地做到这一点? 解决方案 尝试 mkdir -p: mkdir -p foo 请注
..
我有一个脚本,如果它是源代码,我不希望它调用 exit. 我想检查是否 $0 == bash 但是如果脚本来自另一个脚本,或者用户从不同的 shell 中获取它,比如 ksh,这就会出现问题>. 是否有一种可靠的方法来检测脚本是否被获取? 解决方案 这似乎可以在 Bash 和 Korn 之间移植: [[ $_ != $0 ]] &&echo "正在获取脚本" ||echo "
..
要将命令的输出作为变量存储在 sh/ksh/bash 中,您可以执行以下任一操作 var=$(command) 或 var=`command` 这两种方法有什么区别? 解决方案 反引号/墓碑已被弃用,取而代之的是 $() 用于命令替换,因为 $() 可以像 $(echo foo$(echo bar)) 一样轻松地嵌套在自身中.还有其他差异,例如反斜杠在反引号/gravemark 版
..
我注意到有时在尝试编辑历史记录中的一行以重新运行命令时,ksh 会使该行出现乱码并将光标向上移动一行.这真的很奇怪. 首先发现只有排长队出现问题 调试,发现COLUMNS变量没有设置(很确定Terminal是用来设置的) 我可以手动将其设置为一些大数字,但随后出现了其他问题. 我找不到任何方法来强制终端在调整窗口大小时更新 COLUMNS 值 - 我该怎么做? 解决方案
..
运行以下脚本后,输出文件中语句的末尾缺少分号.我该如何打印分号?在这种情况下,在 AUTO 之后和 RESIZE 146800640 之后应该有一个分号 sqlplus -s sys/$ {sysPwd} @ $ {srcSID} as sysdba createTS.sql开启SERVEROUTPUT取消前进设置反馈关闭套装长9999设定线宽999设置LONGCHUNKSI
..