标签: input

为什么while循环和for循环的行为不同?

我正在尝试从文件中读取用户和服务器详细信息tempo.txt,然后使用另一个脚本检查该 unix 帐户上文件系统的磁盘空间使用情况server_disk_space.sh。但我无法弄清楚为什么 while 循环仅适用于第一行和 for 循环工作正常。请帮助我理解这一点。

使用while循环

#!/usr/bin/ksh
while read line
do
r1=`echo $line | cut -d"#" -f1`;
r2=`echo $line | cut -d"#" -f2`;
apx_server_disk_space.sh $r2 $r1
done<tempo.txt
Run Code Online (Sandbox Code Playgroud)

输出

8
Run Code Online (Sandbox Code Playgroud)

使用 for 循环

#!/usr/bin/ksh
for line in $(cat tempo.txt)
do
r1=`echo $line | cut -d"#" -f1`;
r2=`echo $line | cut -d"#" -f2`;
apx_server_disk_space.sh $r2 $r1
done
Run Code Online (Sandbox Code Playgroud)

输出

8
23
54
89
12
Run Code Online (Sandbox Code Playgroud)

的内容 server_disk_space.sh

#!/usr/bin/ksh
user=$1
server=$2
count=`ssh ${user}@${server} "df -h ."`
echo ${count} | …
Run Code Online (Sandbox Code Playgroud)

shell io-redirection input for

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

使用读取的 Bash 脚本需要在 Ctrl+D 上停止执行

我需要编写一个脚本,如果Enter按下,它将向文本文件添加一行。

但是,如果按下Ctrl+ D,我需要在 bash 中退出该循环。

touch texttest.txt
LINE="0"
while true; do
    read LINE;
    if [ "$LINE" == "^D" ]; then
            break
    else
            echo "$LINE" >> texttest.txt
    fi
done
Run Code Online (Sandbox Code Playgroud)

目前有类似的东西,但无法弄清楚当按下Ctrl+D而不是Enter.

bash input shell-script read

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

如何启动脚本并将标准输入放入一个命令中?

我有一个使用标准输入和输出的控制台程序。

例如我打电话给:./program_name然后我输入输入

我需要在一个命令中执行这两个操作,例如:(./program_name 'my input string'此命令返回Abort trap: 6)。

怎么做?

我没有程序的源代码。

shell input

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

我无法在交互式命令模式下键入空格

一个很奇怪的情况。如果我输入交互式命令 - 在这种情况下taskshnslookup我不能输入空格。例如:

tasksh> add "my new task"
Run Code Online (Sandbox Code Playgroud)

变成

tasksh> add"mynewtask"
Run Code Online (Sandbox Code Playgroud)

并且不工作,自然。我想也许这与此有关,tasksh但后来我以nslookup交互模式进行了检查-这是同一回事。这会在 linux4.6.7-1-MANJARO上发生,但不会在 OpenSUSE Leap 42.1 上发生。

我应该如何解决这个非常令人讨厌的事情?

我尝试运行不同的终端(gnome-terminal、xfce4-terminal、xterm),它给出了相同的结果。

command-line keyboard-shortcuts input

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

读取 PS/2 键盘的 /dev/input/

我目前正在做一个项目,我想通过模拟 PS/2 键盘,用 AVR 控制我的 PC。出于这个原因,我目前拥有所有必需的硬件和一些软件库,例如AVR 的https://github.com/ndusart/ps2-keyboardhttp://python-evdev.readthedocs.io/en/latest/ PC 部分的index.html
我还从阅读有关的PS / 2协议http://www.pcbheaven.com/wikipages/The_PS2_protocol/http://www.computer-engineering.org/ps2protocol/http://retired.beyondlogic.org/键盘/keybrd.htm

然后我运行了命令sudo cat /dev/input/by-path/platform-i8042-serio-0-event-kbd > ./kbrd.hex并连接了键盘,然后按下并释放退格键。
我会除了类似的东西AA 66 F0 66,也许还有一些FA(ACK)介于两者之间,但我得到的是非常不同的:

在此处输入图片说明

所以我的问题是:
这可能是由于我对 /dev/input/ 的工作行为的误解造成的,还是问题出在我设置的其他部分?我希望从 /dev/input/ 的缓冲区中获取原始输入,这不是我认为的原始输入。


插入键盘后编辑另一个十六进制转储: 在此处输入图片说明

keyboard input

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

ssh 连接断开后单击鼠标

ssh我已通过终端登录到远程服务器。由于服务器故障或网络问题,连接被终止。

然后出现一些烦人的东西。一旦我在终端上单击鼠标,它会自动输入如下内容:
$ 0;85;36M0;85;36m0;94;38M32;95;38M0;95;38m0;68;42M32;67;42M32;66;42M32;65;42M32;65;41M32;64;41M32;63;41M32;62;41M32;61;41M32;60;41M32;59;41M32;58;41M32;57;41M32;55;41M32;54;41M32;53;41M32;52;41M32;51;41M32;50;41M32;49;41M0;49;41m

这些东西到底是什么?有没有办法阻止或减少它们而不需要重新启动终端?

linux shell ssh input

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

如何在标准输入上存储提供给函数的数据?

> cat b.txt 
function first
    {
    foo=$(SOMEMAGIC)
    }

echo nyi | first 
> 
Run Code Online (Sandbox Code Playgroud)

问题:我们如何将“nyi”字符串赋予函数内的“foo”变量?那么我们如何将通过管道提供给函数的数据传递给函数内部的变量呢?

shell pipe input function

0
推荐指数
1
解决办法
51
查看次数

为什么执行 ls &gt; empty.txt 在空文件夹中的 empty.txt 中显示我 empty.txt?

为什么在一个空文件夹执行ls > empty.txt显示我empty.txtempty.txt

这不是诗,这是真的,我不知道为什么。

对我来说,他们的思考方式ls > empty.txt循序渐进的

  1. ls被执行,我得到输出(在那一刻无效
  2. >意味着我得到了上一个命令的输出(实际上fd 2
  3. empty.txt是获取ls(无)输出的文件的名称。

那为什么要跑

猫空.txt

我得到

empty.txt 
Run Code Online (Sandbox Code Playgroud)

如果文件夹是空的?

process io-redirection input output

0
推荐指数
1
解决办法
78
查看次数

WSL 2 输入/输出错误

背景

我正在下载 cuda-toolkit-10-1,遵循https://docs.nvidia.com/cuda/wsl-user-guide/index.html中的指南,包括将我的 WSL 从版本 1 更新到版本 2。即将结束apt-get install当我的内存可能耗尽时,我的 安装在解压时出现错误消息:dpkg: error processing archive /tmp/<cuda_vers>.deb: error setting permissions of <file.so>: Read-only file system错误代码(2)。

我释放了一些内存并尝试通过 apt-get 重新安装,但出现错误消息dpkg was interrupted, you must manually run 'sudo dpkg --configure -a to correct the problem,我尝试失败dpkg: error: unable toa ccess dpkg status area: Read-only file system

问题

我现在无法运行大多数命令。以下是一些错误消息及其各自的错误 消息ls::-bash: /bin/ls: Input/output error df -uSorry, command-not-found has crashed! Please file a bug report..., Python version: …

input package-management windows-subsystem-for-linux

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

Bash:echo 好还是 &lt;&lt;&lt;?

传递输入时,哪种方法更好?

 > echo 'test' | base64
dGVzdAo=

 > base64 <<< 'test'
dGVzdAo=
Run Code Online (Sandbox Code Playgroud)

对于变量,应该使用哪种方法?

 > t='test'

 > echo "$t" | base64
dGVzdAo=

 > base64 <<< "$t"
dGVzdAo=
Run Code Online (Sandbox Code Playgroud)

shell bash input shell-script base64

-1
推荐指数
1
解决办法
164
查看次数