Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 批次为%var%";%%g在example.txt中do save=%%g_Bash_Loops_Batch File_For Loop - Fatal编程技术网

Bash 批次为%var%";%%g在example.txt中do save=%%g

Bash 批次为%var%";%%g在example.txt中do save=%%g,bash,loops,batch-file,for-loop,Bash,Loops,Batch File,For Loop,昨天我的一个朋友给我这个代码,它从一个文件中提取一行。 我不知道它是如何工作的,我需要将它移植到bash @echo off setlocal EnableDelayedExpansion set list="List_of_pages.txt" :: Count lines and generate number for /f "usebackq" %%c in (`find /V /C "" ^< %list%`) do set lines=%%c

昨天我的一个朋友给我这个代码,它从一个文件中提取一行。 我不知道它是如何工作的,我需要将它移植到bash

@echo off
    setlocal EnableDelayedExpansion
    set list="List_of_pages.txt"
    :: Count lines and generate number
    for /f "usebackq" %%c in (`find /V /C "" ^< %list%`) do set lines=%%c
    set /a chosen = 0
    :AA
    set /a chosen = %chosen% +1
    set /a skiplines= %chosen% -1

    if chosen equ lines goto eof
    :: gets the line
    set skip=
    if %skiplines% gtr 0 set skip=skip=%skiplines%


       for /f "usebackq %skip% delims=" %%c in (%list%) do set "current=%%c" & goto continue

        :continue
    echo  %current%
@echo关闭
setlocal EnableDelayedExpansion
set list=“list\u of_pages.txt”
::计算行数并生成编号
对于(`find/V/c”“^<%list%`)中的/f“usebackq”%%c,请设置行=%%c
设置/a选择=0
:AA
设置/a所选=%selected%+1
设置/a跳过项=%selected%-1
如果选择equ lines转到eof
::获取线路
设置跳过=
如果%skipline%gtr 0设置skip=skip=%skipline%
对于/f“usebackq%skip%delims=“%%c in(%list%)请设置“current=%%c”&继续
:继续
回波%电流%
现在,
对于/f“usebackq%skip%delims=“%%c in(%list%)确实设置了“current=%%c”&goto continue
意味着什么?我真正不知道的是
%skip%


关于如何在bash中使用这一行有什么帮助吗?

请注意以下批处理的基本知识。。。这将使您能够轻松地将批处理脚本转换为bash

  • %符号中包含的所有字符串都是变量。(例如,可变百分比%)
  • Set是一个用于为变量赋值的命令。(或初始化变量)
  • For是一个循环命令,您必须了解循环的工作原理
  • 的子命令用于命令(循环)-使用backq、Skip、Delims
UseBackQ:告诉CMD,在FOR LOOP括号内,将有一个字符串-如果该字符串用“”(双引号)括起来,则它是一个文件名(不是简单的字符串),并修改`(记号)的用法。
跳过:告诉CMD先跳过文本文件中的N行数(它不会读取这些行)
Delims:告诉您要从何处切掉字符串(文件行)-例如,Delims=,会将行与所有逗号分开

我的分析: 在这里,我认为-这段代码将做的是获取一个文件,并返回用户选择的文本文件的一行

它正在读取第5行中的一个文件List\u of_pages.txt。并且,它应该是Set/p Skip=@第12行。(不要计算空行)。并返回所选行@line14

希望,我帮了你!:)