小编c c*_*ard的帖子

如何在while-loop读取行中读取用户?

我有一个bash文件,它提示用户输入一些参数,如果没有给出任何参数则使用默认值.然后该脚本继续使用参数执行一些其他命令.这很有效 - 直到最近添加才有问题.

为了尝试从txt文件中读取NAMES参数,我添加了一个while循环来接收文件中的名称,但我仍然希望提示其余的参数.

但是一旦我添加了while循环,输出就会在get_ans()中显示打印的提示,并且永远不会暂停读取,因此会选择所有默认值.

我想从文件中读取第一个参数,然后从提示用户读取所有后续文件.

通过添加while循环我打破了什么?

cat list.txt | 
while read line
do 
  get_ans "Name" "$line"
  read NAME < $tmp_file

  get_ans "Name" "$line"
  read NAME < $tmp_file
done

function get_ans
{
  if [ -f $tmp_file ]; then
    rm $tmp_file

  PROMPT=$1
  DEFAULT=$2

  echo -n "$PROMPT [$DEFAULT]: "
  read ans
  if [ -z "$ans" ]; then
    ans="$DEFAULT"
  fi
  echo "$ans" > $tmp_file
}
Run Code Online (Sandbox Code Playgroud)

(注意:代码不是复制和粘贴,所以请原谅错别字.实际代码在main()之前定义了函数)

linux bash while-loop

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

什么导致这些c write()调用的巨大性能差异?

有人看到这两行之间的区别吗?

1) ret = write( fd_out, local_bugger, bytes_to_move);

2) nwritten = write (fd, buf + total_written, size - total_written);
Run Code Online (Sandbox Code Playgroud)

显然,不是命名约定.

具体来说,一个是通过网络写入比另一个快4倍.

寻找逻辑,旗帜等

谢谢

c gcc dd

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

c传递unsigned long long值

一个函数的最后两行怎么样?

printf("disk_free_blocks returning %llu\n",item_int3);
return (item_int3);
Run Code Online (Sandbox Code Playgroud)

出来

disk_free_blocks返回233012428800

返回调用函数为

part_avail=disk_free_blocks(DiskParts[part_index].part_name,DISK_AVAIL);
if (DEBUG) printf("DiskParts[%d].part_name=%s has %llu free.\n",part_index,DiskParts[part_index].part_name,part_avail);
Run Code Online (Sandbox Code Playgroud)

并输出

DiskParts [0] .part_name =/dev/sda1有1084194816免费.

??

unsigned long long part_avail, item_int3;
Run Code Online (Sandbox Code Playgroud)

c

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

标签 统计

c ×2

bash ×1

dd ×1

gcc ×1

linux ×1

while-loop ×1