我写了一个期望内部的bash脚本,连接到终端服务器和清除行.我无法弄清楚我得到的错误,因为我已经给了所有必要的括号.我也不理解couldn't read file "line": no such file or directory错误.请帮助.
我的剧本:
#!/bin/bash
VAR=$(expect -c "
spawn telnet 1.1.1.1
expect {
"Password:" { send "password\r" ; exp_continue}
"Prompt>" { send "en\r" ; exp_continue}
"Password:" { send "password\r" ; exp_continue}
"Prompt#" {send "clea line 10\r" ; exp_continue}
"[confirm]" {send "Y\r" ; exp_continue}
"Prompt#" {send "clea line 11\r" ; exp_continue}
"[confirm]" {send "Y\r" ; exp_continue}
"Prompt#" {send "exit\r" }
}
")
echo $VAR
Run Code Online (Sandbox Code Playgroud)
它的输出:
missing close-brace
while executing
"expect"
couldn't read file …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个C程序.我需要变量"recq"的地址.有人可以帮我解决这个问题吗?
typedef struct {
int recq;
} dd;
struct test {
dd a;
};
main(){
struct test *mm;
mm=(struct test *) malloc (sizeof (struct test));
ss=&(mm->a.recq);
printf("%p",ss);
}
Run Code Online (Sandbox Code Playgroud) 我正在用bash编写一些期望命令.
脚本:
#!/bin/bash
set timeout -1
expect -c "
spawn telnet $IP $PORT1
sleep 1
send \"\r\"
send \"\r\"
expect Prompt1>
interact timeout 20 {
sleep 1
}
expect {
Prompt2> {send \"dir\r\" }
}
"
Run Code Online (Sandbox Code Playgroud)
我对脚本的意图是,首先让它telnet到一台机器,当它看到Prompt1时,让它控制我,我将执行一个命令来加载一个特定的图像.然后等待Prompt2显示(表示图像已加载).然后让它执行另一组命令.
运行脚本后,我可以进入交互模式,加载我的图像.问题是在远程计算机上退出交互模式并对其进行控制.
我得到的错误:
expect: spawn id exp4 not open
while executing
"expect -nobrace Prompt2 {send "dir\r" }"
invoked from within
"expect {
Prompt2 {send "dir\r" }
}"
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我写了一个bash脚本.它基本上根据输入参数获取三个路径,然后获取路径中的imagename/filename.
像:
我提供:
AA=/home/user
Run Code Online (Sandbox Code Playgroud)
然后它使用find命令获取
/home/user/dir2/images/dir/tellmeimage1fun.bin
最后,我必须将tellmeimage1fun.bin作为输出.
脚本:
#!/bin/bash
echo "arg0 n/k/d"
AA=$1
CC=$3
PATH1="`find $AA/dir2/images/dir/ -name *image1*.bin`"
PATH2="`find $AA/dir2/images/dir/ -name *bimage2*.bin`"
PATH3="`find $AA/dir2/images/dir/ -name *cimage3*.bin`"
if [ $CC = "n" ] ; then
PATH=$PATH1
elif [ $CC = "k" ] ; then
PATH=$PATH2
else
PATH=$PATH3
fi
#Getting filename name from path:
IMG="`ls $PATH | cut -d "/" -f6`"
OUTPUT:
/users/prasapat/bin/sl5: line 22: ls: command not found
/users/prasapat/bin/sl5: line 22: cut: command not found
Run Code Online (Sandbox Code Playgroud)
如果我给ls提供完整的路径并切断它们的工作.但我不想为脚本中的所有命令执行此操作.如果我删除最后一行并回显PATH变量,那就完全没问题了.只有在添加最后一个命令后,才能看到问题.
如果我做了任何明显的错误,请帮助并告诉我.
在Linux上,每秒jiffies和ticks之间有区别吗?我理解jiffies和HZ之间的关系.但我无法理解每秒的滴答声是如何相关的.我在某处看到它是一个内部操作系统计时器,但是当我们有jiffies时为什么还需要另一个呢?有人可以解释一下吗?
我在bash中使用expect.我希望我的脚本telnet到一个框中,期待一个提示,发送一个命令.如果现在有不同的提示,则必须继续,否则它必须再次发送该命令.我的脚本是这样的:
\#!bin/bash
//I am filling up IP and PORT1 here
expect -c "
set timeout -1
spawn telnet $IP $PORT1
sleep 1
send \"\r\"
send \"\r\"
set temp 1
while( $temp == 1){
expect {
Prompt1 { send \"command\" }
Prompt2 {send \"Yes\"; set done 0}
}
}
"
Run Code Online (Sandbox Code Playgroud)
输出:
invalid command name "while("
while executing
"while( == 1){"
Run Code Online (Sandbox Code Playgroud)
请帮助我.
我试着改变它 while [ $temp == 1] {
我仍然面临以下错误:
输出:
invalid command name "=="
while executing
"== 1"
invoked from within …Run Code Online (Sandbox Code Playgroud) 我在Vim水平分割我的窗户.但是在我拆分后,新窗口占据原始窗口大小的一半,我想改变它并确保新窗口占据几乎整个旧窗口.
基本上如果我在Vim中使用水平分割打开三个文件,我应该在屏幕底部看到三个状态栏,第三个文件占据屏幕的其余部分.我已经知道的文件可以通过Ctrl+ W+箭头键导航.因此,如果我现在导航到第二个文件,我应该在底部看到一个状态栏,在顶部看到一个状态栏.
请告诉我如何配置相同的.我在线查看所有我能找到的动态更改大小或调整大小的选项,但我想要静态一次性配置(例如,在vimrc或中bashrc).
我有一个程序:
int main()
{
float f = 0.0f;
int i;
for (i = 0 ; i < 10 ; i++)
f = f + 0.1f;
if (f == 1.0f)
printf("f is 1.0 \n");
else
printf("f is NOT 1.0\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它总是打印f is NOT 1.0. 我知道这与 C 中的浮点精度有关。但我不确定它到底在哪里搞砸了。有人可以解释一下为什么不打印另一行吗?
我对这两个C语句有疑问:
x = y++;
t = *ptr++;
使用语句1,y的初始值被复制到x然后y递增.
使用语句2,我们查看*ptr指向的值,将其放入变量t,然后稍后增加ptr.
对于语句1,后缀增量运算符的优先级高于赋值运算符.所以不应该首先递增y,然后将x赋值给y的递增值?
在这些情况下,我不理解运算符优先级.
bash ×3
c ×3
expect ×3
linux-kernel ×1
pointers ×1
precision ×1
struct ×1
vim ×1
while-loop ×1