ksh相关内容

过滤stderr并获取初始返回代码

在一个外壳脚本中,我必须运行一个命令,我需要确定该命令的返回代码是什么,但结果是该命令的输出转到了stderr,还输出了用户的密码(不幸的是,这是该命令的一个参数;我知道是错误的)。 我至少要筛选密码,使其不会被重新显示。 cmd ${OPTIONS} RETURNCODE=$? 给我该命令的返回代码 cmd ${OPTIONS} 3>&1 1>&2 2>&3 | sed " ..
发布时间:2022-08-19 19:10:55 其他开发

如何在 linux 命令行上找到可能位于任何位置的文件/目录?

理想情况下,我可以使用像 这样的程序 find [文件或目录名称] 报告具有匹配文件名/目录的路径.不幸的是,这似乎只检查当前目录,而不是整个文件夹. 我也试过 locate 和 which,但没有找到该文件,即使我知道它在某处的计算机上. 解决方案 “不幸的是,这似乎只检查当前目录,而不是整个文件夹".大概您的意思是它不在子目录中.要解决此问题,请使用 find -name ..
发布时间:2022-01-20 17:21:56 服务器开发

关于 KornShell 中的“for"循环

有没有办法在 KornShell (ksh) 中使用“for"来实现以下内容?这是 C 等效项: for(i=1;i 我想知道这是否可以仅使用“for"而不是“while"来实现 我尝试了以下方法,似乎不起作用. for i in [1-20]做打印 $i完毕 请告诉我您的想法和解决方案. 解决方案 不幸的是,它看起来好像 ksh 不支持基于范围的大括号扩展或支持 (( )) ..
发布时间:2022-01-04 10:16:55 其他开发

Shell 脚本模板

对于将一个好的 bash/ksh 脚本模板用作所有新创建脚本的标准,您有什么建议? 我通常以注释掉的标题开头(在 #! 行之后),其中包含文件名、概要、用法、返回值、作者、更改日志,并且适合 80 字符线. 我以双哈希符号开头的所有文档行 ## 以便我可以轻松地为它们 grep 并且本地 var 名称以“__"开头. 还有其他最佳做法吗?尖端?命名约定?返回码呢? 关于版本 ..
发布时间:2022-01-04 10:06:16 服务器开发

bash 和 ksh 之间的子外壳差异

我一直认为子shell不是子进程,而是另一个同一进程中的shell环境. 我使用一组基本的内置函数: (echo "Hello";read) 在另一个终端上: ps -t pts/0PID TTY 时间 CMD20104 分/0 00:00:00 ksh 因此,kornShell (ksh) 中没有子进程. 输入 bash,给定相同的命令,它的行为似乎有所不同: PID T ..
发布时间:2022-01-04 09:58:20 服务器开发

将命令输出重定向到 ksh 中的变量和标准输出

我有一些 shell 命令.我想将输出写入标准输出并将其保存到变量中.我想用一个命令解决它.这些东西我都试过了. ls >$VAR # 将输出重定向到名称存储在 $VAR 中的文件ls |tee -a $VAR # 写入标准输出以及名称存储在 $VAR 中的文件VAR=`ls` # 输出到$VAR,但不发送到标准输出VAR=`ls`;echo $VAR # 好的,它可以工作,但这是两个命令 有 ..
发布时间:2022-01-04 09:57:43 其他开发

sed -i 触摸它不会改变的文件

我们服务器上有人运行了 sed -i 's/$var >>$var2/$var >$var2/* 将插入更改为在公共目录中的某些 bash 脚本中覆盖.没什么大不了的,它首先用 grep 进行了测试,它返回了预期的结果,只有他的文件会被触及. 他运行了脚本,现在文件夹中 1400 个文件中的 1200 个文件有了新的修改日期,但据我们所知,实际上只有他的一小部分文件被更改了. 为什么 ..
发布时间:2021-12-24 12:23:09 其他开发

为什么在每台机器上**排序** 排序不一样?

对相同的输入使用相同的 sort 命令在不同的机器上会产生不同的结果.我该如何解决? 解决方案 手册页 在 OS X 上说: ******* WARNING ******* 环境指定的区域设置会影响排序顺序.设置 LC_ALL=C 得到使用本机字节值的传统排序顺序. 这可能会解释一些事情. 如果您的某些系统不支持区域设置,它们将默认为该区域设置 (C),因此您不必在这些系 ..
发布时间:2021-12-15 08:15:18 服务器开发

如何在unix中每行末尾添加文本

我正在做某些文本处理操作,最后能够得到一个这样的文件 印度苏丹日本法国 现在我想在上面的文件中添加一个注释,就像在最终文件中一样,它应该是 印度 |国家苏丹 |国家日本 |国家法国 |国家 喜欢整个文件中的相同评论.我该怎么做? 解决方案 方法很多: sed:用给定的文本替换$(行尾). $ sed 's/$/|国家/'文件印度 |国家苏丹 |国家日本 |国家法国 |国家 ..
发布时间:2021-12-15 08:09:35 服务器开发

在 unix shell 中,如何将昨天的日期放入变量中?

我有一个 shell 脚本,它执行以下操作将当前日期存储在变量“dt"中: 日期 "+%a %d/%m/%Y" |读取数据回声 ${dt} 我将如何将 yesterday 日期放入变量中? 基本上我想要实现的是使用 grep 从日志文件中提取所有昨天的行,因为日志中的每一行都包含“Mon 01/02/2010"格式的日期. 非常感谢 解决方案 如果你有 Perl 可用(并且 ..
发布时间:2021-12-15 08:09:21 服务器开发

如何逐行一致地合并两个文件

我有两个文件 (file1.txt & file2.txt ),文件只是示例. 如何合并两个文件,以创建文件 - merge_files.txt 示例 3 我现在在写 ksh 脚本,所以合并可以用 ksh、awk、sed、perl 一个 liner ...等来完成 背景 - 为什么我需要合并文件:我的目标是将旧文件(存在于第一个字段中)重命名为新文件 (存在于第二个字段中) , ..
发布时间:2021-12-10 17:59:16 服务器开发

当我们将命令放在美元符号和括号内时,shell 中的含义是什么:$(command)

我只是想了解 shell 中的以下代码行.它用于获取当前工作目录.我知道 $(variable) 名称返回变量名称内的值,但是 $(command) 应该返回什么?执行命令后是否返回值?在这种情况下,我们可以使用 ` 来执行命令. CWD="$(cd "$(dirname $0)"; pwd)" 在不同版本的shell中也可以从以下代码行中获取相同的输出 DIR="$( cd "$( dir ..
发布时间:2021-12-09 10:38:55 其他开发

仅当目录不存在时如何 mkdir?

我正在编写一个在 AIX 上的 KornShell (ksh) 下运行的 shell 脚本.我想使用 mkdir 命令来创建一个目录.但是目录可能已经存在,在这种情况下我不想做任何事情.所以我想要么测试看看目录不存在,要么抑制 mkdir 在尝试创建现有目录时抛出的“文件存在"错误. 我怎样才能最好地做到这一点? 解决方案 尝试 mkdir -p: mkdir -p foo 请注 ..
发布时间:2021-12-09 10:18:08 其他开发

如何检测是否正在获取脚本

我有一个脚本,如果它是源代码,我不希望它调用 exit. 我想检查是否 $0 == bash 但是如果脚本来自另一个脚本,或者用户从不同的 shell 中获取它,比如 ksh,这就会出现问题>. 是否有一种可靠的方法来检测脚本是否被获取? 解决方案 这似乎可以在 Bash 和 Korn 之间移植: [[ $_ != $0 ]] &&echo "正在获取脚本" ||echo " ..
发布时间:2021-12-05 22:33:45 其他开发

shell 编程中的 $(command) 和 `command` 有什么区别?

要将命令的输出作为变量存储在 sh/ksh/bash 中,您可以执行以下任一操作 var=$(command) 或 var=`command` 这两种方法有什么区别? 解决方案 反引号/墓碑已被弃用,取而代之的是 $() 用于命令替换,因为 $() 可以像 $(echo foo$(echo bar)) 一样轻松地嵌套在自身中.还有其他差异,例如反斜杠在反引号/gravemark 版 ..
发布时间:2021-12-05 22:14:40 其他开发

为什么 ksh 的 vi-mode 在 macOS“Big Sur"的终端中出现有时会损坏编辑行?

我注意到有时在尝试编辑历史记录中的一行以重新运行命令时,ksh 会使该行出现乱码并将光标向上移动一行.这真的很奇怪. 首先发现只有排长队出现问题 调试,发现COLUMNS变量没有设置(很确定Terminal是用来设置的) 我可以手动将其设置为一些大数字,但随后出现了其他问题. 我找不到任何方法来强制终端在调整窗口大小时更新 COLUMNS 值 - 我该怎么做? 解决方案 ..
发布时间:2021-09-05 20:33:50 其他开发

通过ksh脚本提取DDL后缺少分号

运行以下脚本后,输出文件中语句的末尾缺少分号.我该如何打印分号?在这种情况下,在 AUTO 之后和 RESIZE 146800640 之后应该有一个分号 sqlplus -s sys/$ {sysPwd} @ $ {srcSID} as sysdba createTS.sql开启SERVEROUTPUT取消前进设置反馈关闭套装长9999设定线宽999设置LONGCHUNKSI ..
发布时间:2021-05-28 19:49:41 数据库