小编Pes*_*The的帖子

在这里 - 字符串经历分词吗?

引用Bash参考手册man bash(版本4.3):

[n]<<< word

word经历括号扩展,波浪线扩展,参数和变量扩展,命令替换算术扩展和引用的去除.不执行路径名扩展和单词拆分.

word不应该发生的字分裂.但是,使用这个简单的代码:

var="a    b"

cat <<< $var
#output:
#a b

cat <<< "$var"
#output:
#a    b
Run Code Online (Sandbox Code Playgroud)

我错过了什么?这取决于手册的版本bash或是否存在错误?我在用GNU bash, version 4.3.48.

linux bash herestring

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

执行 chroot 并在 chroot 中执行命令的 Shell 脚本

如果在shell脚本中我写

chroot /home/mayank/chroot/codebase
cd SBC
Run Code Online (Sandbox Code Playgroud)

当我运行这个 shell 脚本时,它确实进入chroot但不执行命令cd SBC,当我退出时chroot它会执行cd SBC

如何通过 shell 脚本实现某些功能chroot并执行命令chroot

bash shell chroot

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

为什么 Firebase pendingAuthResult 返回 null?

我正在尝试使用 Firebase 身份验证实现使用 Apple 登录。我正在关注firebase/quickstart-android示例。

我的登录片段覆盖onStart()以检查任何未决结果:

override fun onStart() {
    super.onStart()

    val pending = auth.pendingAuthResult

    pending?.addOnSuccessListener { authResult ->
        Timber.d("Successful login, pending")
    }?.addOnFailureListener { e ->
        Timber.d("Failed login, pending")
    }
}
Run Code Online (Sandbox Code Playgroud)

以及启动登录流程的按钮:

btnApple.onClick {
    viewModel.appleLogin(requireActivity())
}
Run Code Online (Sandbox Code Playgroud)

viewModel 从存储库调用以下方法:

// Initiate sign-in flow only if there are no pending results
if (auth.pendingAuthResult != null) {
    return
}

val scopes = listOf("email", "name")
val provider = OAuthProvider.newBuilder("apple.com", auth)
    .setScopes(scopes)
    .build()

auth.startActivityForSignInWithProvider(activity, provider)
    .addOnSuccessListener { authResult -> …
Run Code Online (Sandbox Code Playgroud)

android kotlin firebase firebase-authentication apple-sign-in

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

为什么 wget -O- 输出到 stdout?

选项-O file用于将wget输出输出到特定的file.

为什么wget -O- "$url"输出到stdout?-O-中没有这样的表达man wget。为什么第二个字符-意味着-O-下载"$url"并将其输出到标准输出?

bash wget

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

替换两个字符串之间的多次出现

我需要将和之间的每个字符替换为:axxzzhello

#input
a xxab abzz ca xxbczz aaa axxazza xxczzaxxczz
#output
a xxhellob hellobzz ca xxbczz aaa axxhellozza xxczzaxxczz
Run Code Online (Sandbox Code Playgroud)

这适用于一对,不适用于更多对(它替换第一个和最后一个之间的xx/zz每个):axxzz

sed -r ':rep; s/(xx.*)a(.*zz)/\1hello\2/; trep'
Run Code Online (Sandbox Code Playgroud)

我认为最好的方法是使用更高级的正则表达式,例如perl.

我正在寻找bashsedawk或的解决方案perl。使用基本/扩展正则表达式是否可以完成此任务?当配对具有更多字符(例如xxxxxx/zzzzzz)时,不会变得难以理解的解决方案是首选。

regex bash perl awk sed

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

如果"file"具有空分隔项,如何使用"grep -f file"?

我需要找到大量文件(空分隔的项目data2,data3存在于...) data1.完全匹配是必需的.

一切都很好用,grep -f data1 data2 data3 ...直到所有项目data1也为空分隔.

  1. 仅使用换行符 - 好的:

    $ cat data1
    1234
    abcd
    efgh
    5678
    $ cat data2
    1111
    oooo
    abcd
    5678
    $ grep -xFf data1 data2
    abcd
    5678
    
    Run Code Online (Sandbox Code Playgroud)
  2. data2-包含null分隔的项目确定-z:使用

    $ printf '1111\0oooo\0abcd\0005678' > data2
    $ grep -zxFf data1 data2 | xargs -0 printf '%s\n'
    abcd
    5678
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,这两个data1data2包含空分隔的项目- 失败.似乎该-z选项不适用于指定的文件-f:

    $ printf '1234\0abcd\0efgh\0005678' > …
    Run Code Online (Sandbox Code Playgroud)

bash grep comm

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

为什么在 TextField 周围添加视图时它会失去焦点?

我有一个简单的屏幕,带有TextField. 其上方和下方各有一份信息文本。这些信息文本仅在满足特定条件时才会显示。

最小的例子:

class FooPage extends StatefulWidget {
  const FooPage({Key? key}) : super(key: key);

  @override
  State<StatefulWidget> createState() {
    return FooState();
  }
}

class FooState extends State<FooPage> {
  TextEditingController controller = TextEditingController();
  bool show = true;
  
  @override
  void initState() {
    super.initState();
    controller.addListener(() {
      setState(() => show = controller.text.length < 5);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        children: [
          show ? const Text("hello1") : const SizedBox.shrink(),
          TextField(controller: controller),
          show ? const Text("hello2") : const SizedBox.shrink(), …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-layout

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

^ [:blank:]与sed中的点不匹配

我的输入如下:

INa.aa ................... 2010年10月,此前美国业主未能偿还债务

我的目标是在以letter i/ 开头的每个单词周围加上括号I.所以我发出了一个命令:

sed 's/\<i[^[:blank:]]*\>/(&)/gi' input_data
Run Code Online (Sandbox Code Playgroud)

哪个返回了这个输出:

(INa.aa)................... 2010年10月之后(以前)美国的所有者未能偿还债务

我没有得到的是,为什么不^[:blank:]*包括之后的点INa.aa

谢谢你的任何建议.

linux bash sed

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