好的,我确信这很简单,但它让我疯了.我最近去了一个程序,我不得不退后一点并使用Redhat 9.当我在运行KornShell(ksh)的标准xterm的命令行上输入时,我到达了结束时屏幕右侧滑动(切断命令的左侧),而不是将文本环绕到新行.这让我很难,因为我无法直接从命令行复制和粘贴上一个命令.我必须查看历史记录并从那里粘贴命令.如果你想知道,我做了很多命令行awk脚本,导致行很长.
有没有办法强制命令行换行而不是将可见性转移到我正在键入的命令的右侧?
我通过手册页选项没有运气.
我在跑:
谢谢.
Android在线文档Android Debug Bridge说"Adb提供了一个灰壳".果然,如果我adb shell去AVD模拟器,我会得到灰烬,这基本上是一个简化的Bourne shell.
但是,如果我连接到几个远程设备,一个是HTC电话,另一个是华硕Transformer Prime平板电脑,它们都有一个版本的Korn shell,它提供:KSH_VERSION='@(#)MIRBSD KSH R39 2010/08/24'.虽然MIRBSD KSH不是一款成熟的AT&T Korn外壳,但它仍然比灰烬强大得多.
模拟器正在运行Jelly Bean,两个设备都在使用ICS.再做一点挖掘,看起来像是在姜饼中的灰烬,而在Honeycomb中则是mirbsd ksh.
那么,有人可以确认Android在线文档是错误的,并且模拟器运行的是过时的shell吗?还是供应商正在实施自己的?
我一直在谷歌搜索和溢出一点,找不到任何可用的东西.
我需要一个监视公用文件夹的脚本,并在创建新文件时触发,然后将文件移动到私有位置.
我/exam/ple/在unix上有一个samba共享文件夹映射到X:\Windows上.在某些操作上,txt文件将写入共享.我想绑架出现在文件夹中的任何txt文件,并将其/pri/vate放在unix上的私人文件夹中.移动该文件后,我想触发一个单独的perl脚本.
编辑 仍然等待看到一个shell脚本,如果有人有任何想法...将监视新文件,然后运行如下所示的东西:
#!/bin/ksh
mv -f /exam/ple/*.txt /pri/vate
Run Code Online (Sandbox Code Playgroud) 版本格式 - XXXX
其中X - 编号.
比较两个版本的最佳方法是什么?
我使用以下代码:
compareVersions()
{
VER_1=$1
VER_2=$2
print -R "$VER_1"| IFS=. read v1_1 v1_2 v1_3 v1_4
print -R "$VER_2"| IFS=. read v2_1 v2_2 v2_3 v2_4
RESULT="0"
if [[ "${v1_1}" -lt "${v2_1}" ]]
then
RESULT="-1"
elif [[ "${v1_1}" -gt "${v2_1}" ]]
then
RESULT="1"
elif [[ "${v1_2}" -lt "${v2_2}" ]]
then
RESULT="-1"
elif [[ "${v1_2}" -gt "${v2_2}" ]]
then
RESULT="1"
elif [[ "${v1_3}" -lt "${v2_3}" ]]
then
RESULT="-1"
elif [[ "${v1_3}" -gt "${v2_3}" ]]
then
RESULT="1"
elif …Run Code Online (Sandbox Code Playgroud) 什么是最简单优雅的方式来总结数字在ksh或bash我的例子是关于let命令,但我想找到更好的方法来汇总所有数字
例如
num1=1232
num2=24
num3=444
.
.
.
let SUM=$num1+num2+num3.........
Run Code Online (Sandbox Code Playgroud) 如果我跑
bash -x myscript.sh
Run Code Online (Sandbox Code Playgroud)
我会得到调试输出.
但是如果我有一个函数myscript.sh,函数中的代码不受-x选项的影响.它只写输出函数的名称.
如何在bash脚本中获取函数的调试输出?
更新:
在ztank1013的回复之后,我才意识到我使用的是ksh,而不是bash.似乎bash默认情况下在我的系统中启用了functrace选项(感谢bash-o-logist)
我很满意,但对于社区我维持ksh的问题.
对于脚本:
#!/bin/ksh
a=2
testering(){
a=3
if [ $a -eq 3 ]; then
echo lili
fi
}
if [ $a -eq 2 ]; then
echo mimi
fi
testering
exit
Run Code Online (Sandbox Code Playgroud)
输出ksh -x ./testdebug.sh是:
+ a=2
+ [ 2 -eq 2 ]
+ echo mimi
mimi
+ testering
lili
+ exit
Run Code Online (Sandbox Code Playgroud)
那么,对于ksh来说,有什么诀窍呢?
(如果没有答案,'正确'将转到bash-o-logist.)
请考虑以下脚本(用于local_var2的算术语法与此情况无关):
#!/bin/ksh
function my_func1
{
typeset local_var1=one
typeset local_var2
(( local_var2 = 1 ))
echo my_func1: local_var1 = $local_var1, local_var2 = $local_var2
}
my_func2()
{
typeset local_var1=two
typeset local_var2
(( local_var2 = 2 ))
echo my_func2: local_var1 = $local_var1, local_var2 = $local_var2
}
local_var1=0
local_var2=0
echo before functions: local_var1 = $local_var1, local_var2 = $local_var2
my_func1
echo after my_func1: local_var1 = $local_var1, local_var2 = $local_var2
my_func2
echo after my_func2: local_var1 = $local_var1, local_var2 = $local_var2
Run Code Online (Sandbox Code Playgroud)
运行时,它会产生以下输出:
before functions: local_var1 = 0, …Run Code Online (Sandbox Code Playgroud) 我似乎遇到了一个特定于ksh88的问题,它将单引号改为双引号,但仅在涉及heredocs和命令替换的某些情况下.
这是一个例子:
#!/bin/ksh
# This example works correctly
echo "Example 1:"
cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF
echo
# This example is broken
echo "Example 2:"
var=$(cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF)
echo "${var}"
echo
# This example works correctly
echo "Example 3:"
var=`cat <<EOF
The 'quick' brown fox "jumped" over the lazy dog.
EOF`
echo "${var}"
echo
Run Code Online (Sandbox Code Playgroud)
这是输出(请注意示例2的不同之处):
Example 1:
The 'quick' brown fox "jumped" over the …Run Code Online (Sandbox Code Playgroud) 我有一个涉及shell脚本并比较其中的值/变量的项目.我在这里和其他地方看过比较变量,我已经尝试了所有给出的各种例子,但我遇到了一些不像广告那样的东西.操作系统是Solaris10
我创建了以下脚本作为学习经历 -
#!/bin/ksh
stest()
{
if $X = $Y
then echo they're the same
else echo they're notthe same
fi
}
X=a
Y=a
stest
echo completed
Run Code Online (Sandbox Code Playgroud)
我不断得到以下的一些变化 -
使用shell sh或ksh-
#./test.sh
./test.sh[2]: a: not found
completed
Run Code Online (Sandbox Code Playgroud)
使用shell bash-
#./test.sh
./test.sh: line 5: a: command not found
completed
Run Code Online (Sandbox Code Playgroud)
我已经尝试if $X = $Y用括号和双括号括起来,然后我回来了
[a: not found
Run Code Online (Sandbox Code Playgroud)
要么
[[a: not found
Run Code Online (Sandbox Code Playgroud)
如果我将变量X和Y更改为数字"1",我会得到相同的东西 -
./test.sh[2]: 1: not found
Run Code Online (Sandbox Code Playgroud)
我试过用单引号,双引号和反向引号括起来.
任何帮助表示赞赏.